Add new syntax for booleans

This commit is contained in:
Yiyun Liu 2025-01-20 20:42:40 -05:00
parent d9d96d2c8b
commit 1f7460fd11
3 changed files with 95 additions and 2 deletions
theories

View file

@ -15,11 +15,14 @@ Module Compile.
| Pair a b => Pair (F a) (F b)
| Proj t a => Proj t (F a)
| Bot => Bot
| If a b c => App (App (F a) (F b)) (F c)
| BVal b => if b then (Abs (Abs (VarTm (shift var_zero)))) else (Abs (Abs (VarTm var_zero)))
| Bool => Bool
end.
Lemma renaming n m (a : Tm n) (ξ : fin n -> fin m) :
F (ren_Tm ξ a)= ren_Tm ξ (F a).
Proof. move : m ξ. elim : n / a => //=; scongruence. Qed.
Proof. move : m ξ. elim : n / a => //=; hauto lq:on. Qed.
#[local]Hint Rewrite Compile.renaming : compile.
@ -33,6 +36,8 @@ Module Compile.
- hauto lq:on rew:off.
- hauto lq:on.
- hauto lq:on inv:option rew:db:compile unfold:funcomp.
- hauto lq:on rew:off.
- hauto lq:on rew:off.
Qed.
Lemma substing n b (a : Tm (S n)) :