doesn't work just yet
Links
| {-# LANGUAGE DeriveAnyClass, DeriveGeneric #-} | |
| import qualified Unbound.Generics.LocallyNameless as Unbound | |
| import GHC.Generics (Generic) | |
| import Control.DeepSeq (NFData, force) | |
| type LName = Unbound.Name LTerm | |
| data LTerm | |
| = -- | variables `x` |
| let | |
| defpkgs = builtins.fetchTarball { | |
| # Descriptive name to make the store path easier to identify | |
| name = "nixos-22.05.1271.babb041b716"; | |
| # Commit hash for nixos-unstable as of 2018-09-12 | |
| url = "https://releases.nixos.org/nixos/22.05-small/nixos-22.05.1271.babb041b716/nixexprs.tar.xz"; | |
| # Hash obtained using `nix-prefetch-url --unpack <url>` | |
| sha256 = "0g8vwni83zn6kgkczrm5vwmyhl473rrs9d4k4hn5gfbgfsyv7ls8"; | |
| }; | |
| in |
| Ltac destruct_fun_explicit T t f := | |
| match goal with | |
| | |- ?G => let Fn := fresh in | |
| let Hn := fresh in | |
| let En := fresh in | |
| enough (forall x : T, G) as Hn; | |
| [ apply Hn; exact t | |
| | intros Fn; pose (ap := f Fn); | |
| destruct Fn; destruct ap eqn: En; subst ap | |
| ] |