Refactor the equational theory to use the compile function

This commit is contained in:
Yiyun Liu 2025-01-20 20:11:51 -05:00
parent 7850314935
commit 36427daa61
3 changed files with 67 additions and 28 deletions

View file

@ -1,6 +1,7 @@
Require Import Autosubst2.core Autosubst2.fintype Autosubst2.syntax fp_red.
Require Import ssreflect ssrbool.
From Hammer Require Import Tactics.
From stdpp Require Import relations (rtc(..)).
Module Compile.
Fixpoint F {n} (a : Tm n) : Tm n :=
@ -78,6 +79,16 @@ Module Join.
R a a.
Proof. hauto l:on use:join_refl. Qed.
Lemma substing n m (a b : Tm n) (ρ : fin n -> Tm m) :
R a b -> R (subst_Tm ρ a) (subst_Tm ρ b).
Proof.
rewrite /R.
rewrite /join.
move => [C [h0 h1]].
repeat (rewrite <- Compile.morphing with (ρ0 := funcomp Compile.F ρ); last by reflexivity).
hauto lq:on use:join_substing.
Qed.
End Join.
Module Equiv.
@ -148,5 +159,23 @@ Module EquivJoin.
Qed.
End EquivJoin.
Module CompilePar.
End CompilePar.
Lemma compile_rpar n (a b : Tm n) : RPar'.R a b -> RPar'.R (Compile.F a) (Compile.F b).
Proof.
move => h. elim : n a b /h.
- move => n a0 a1 b0 b1 ha iha hb ihb /=.
rewrite -Compile.substing.
apply RPar'.AppAbs => //.
- hauto q:on use:RPar'.ProjPair'.
- qauto ctrs:RPar'.R.
- hauto lq:on ctrs:RPar'.R.
- hauto lq:on ctrs:RPar'.R.
- hauto lq:on ctrs:RPar'.R.
- hauto lq:on ctrs:RPar'.R.
- hauto lq:on ctrs:RPar'.R.
- hauto lq:on ctrs:RPar'.R.
- hauto lq:on ctrs:RPar'.R.
- hauto lq:on ctrs:RPar'.R.
Qed.
Lemma compile_rpars n (a b : Tm n) : rtc RPar'.R a b -> rtc RPar'.R (Compile.F a) (Compile.F b).
Proof. induction 1; hauto lq:on ctrs:rtc use:compile_rpar. Qed.