@@ -3,7 +3,7 @@ https://github.com/brunofx86/LL *)
3
3
4
4
(** ** LJ into LL
5
5
We specify the system LJ for intuitionistic propositional logic. We encode that system as a Linear Logic theory and we prove the adequacy of that encoding. For that, we use the techniques described here #<a href="http://www.sciencedirect.com/science/article/pii/S0304397512010894">[Miller and Pimentel 13]# and the formalization of the focused system for Linear Logic.
6
- *)
6
+ *)
7
7
8
8
Require Import Coq.Relations.Relations.
9
9
Require Import Coq.Arith.EqNat.
@@ -431,7 +431,7 @@ Section InversionTerm.
431
431
rewrite AtomNeg in H.
432
432
LexpSubst.
433
433
LexpSubst.
434
-
434
+
435
435
eapply InvDjTerm;eauto .
436
436
Qed .
437
437
@@ -833,9 +833,9 @@ Proof with InvTac.
833
833
apply multisetEncode in H1.
834
834
rewrite H1.
835
835
eapply tri_dec2 with
836
- (B':= [BLEFT; INIT; CRIGHT; DRIGHT1; DRIGHT2; DLEFT; IRIGHT; ILEFT]) (F:= CLEFT)...
836
+ (B':= [BLEFT; INIT; CRIGHT; DRIGHT1; DRIGHT2; DLEFT; IRIGHT; ILEFT]) (F:= CLEFT)...
837
837
solve_permutation.
838
- eapply tri_ex with (t:= encodeTerm G).
838
+ eapply tri_ex with (t:= encodeTerm G).
839
839
eapply tri_ex with (t:= encodeTerm G') ...
840
840
eapply tri_tensor with (N:= [encodeFL (PL.conj G G')])
841
841
(M:= (A1 rg (encodeTerm F)) ⁺ :: encodeList (L'));eauto;conv ...
@@ -1028,7 +1028,7 @@ Proof with InvTac.
1028
1028
apply AtomsTheoryFalse in H3.
1029
1029
contradiction.
1030
1030
inversion H0;subst ...
1031
- (* cannot be a release .. then H2 is inconsistent *)
1031
+ (* cannot be a release .. then H2 is inconsistent *)
1032
1032
Qed .
1033
1033
1034
1034
Lemma LeftRightAtom : forall F t, encodeFR F = (A1 rg t) ⁺ -> encodeFL F = (A1 lf t) ⁺.
@@ -1647,12 +1647,12 @@ Proof with InvTac.
1647
1647
split;auto.
1648
1648
split;auto.
1649
1649
assert(HM:encodeFR F :: encodeFL G :: encodeList L' =mul=
1650
- (encodeFR F :: encodeList L') ++ [encodeFL G] ).
1650
+ (encodeFR F :: encodeList L') ++ [encodeFL G] ).
1651
1651
solve_permutation.
1652
1652
rewrite HM; assumption.
1653
1653
1654
1654
assert(HM:encodeFR F :: encodeFL G' :: encodeList L' =mul=
1655
- (encodeFR F :: encodeList L') ++ [encodeFL G'] ). (* !! solve_per should work here *)
1655
+ (encodeFR F :: encodeList L') ++ [encodeFL G'] ). (* !! solve_per should work here *)
1656
1656
solve_permutation.
1657
1657
rewrite HM; assumption.
1658
1658
@@ -1842,7 +1842,7 @@ Proof with InvTac.
1842
1842
split;auto.
1843
1843
1844
1844
assert(HS: encodeFR G' :: encodeFL G :: encodeList L =mul=
1845
- (encodeList L ++ [encodeFL G]) ++ [encodeFR G']).
1845
+ (encodeList L ++ [encodeFL G]) ++ [encodeFR G']).
1846
1846
solve_permutation.
1847
1847
rewrite HS ...
1848
1848
@@ -1884,22 +1884,22 @@ Proof with InvTac.
1884
1884
F0 = CRIGHT \/ F0 = CLEFT \/
1885
1885
F0 = DRIGHT1 \/ F0 = DRIGHT2 \/
1886
1886
F0 = DLEFT \/ F0 = IRIGHT \/ F0 = ILEFT).
1887
- unfold Theory in H3.
1888
- assert (In F0 [BLEFT; INIT; CRIGHT; CLEFT; DRIGHT1; DRIGHT2; DLEFT; IRIGHT; ILEFT]).
1889
- apply In_to_in.
1890
- rewrite H3; auto.
1891
- destruct H1; eauto .
1892
- destruct H1; eauto .
1893
- destruct H1; eauto .
1894
- destruct H1; eauto .
1895
- destruct H1. do 4 right. left. eauto .
1896
- destruct H1. do 5 right. left. eauto .
1897
- destruct H1. do 6 right. left. eauto .
1898
- destruct H1. do 7 right. left. eauto .
1899
- destruct H1. do 8 right. eauto .
1900
- inversion H1.
1901
-
1902
- (* !! by multiset resoning and the definition of Theory *)
1887
+ unfold Theory in H3.
1888
+ assert (In F0 [BLEFT; INIT; CRIGHT; CLEFT; DRIGHT1; DRIGHT2; DLEFT; IRIGHT; ILEFT]).
1889
+ apply In_to_in.
1890
+ rewrite H3; auto.
1891
+ destruct H1; eauto .
1892
+ destruct H1; eauto .
1893
+ destruct H1; eauto .
1894
+ destruct H1; eauto .
1895
+ destruct H1. do 4 right. left. eauto .
1896
+ destruct H1. do 5 right. left. eauto .
1897
+ destruct H1. do 6 right. left. eauto .
1898
+ destruct H1. do 7 right. left. eauto .
1899
+ destruct H1. do 8 right. eauto .
1900
+ inversion H1.
1901
+
1902
+ (* !! by multiset resoning and the definition of Theory *)
1903
1903
destruct H1 as [HF1 | [HF1 | [HF1 | [HF1 | [HF1 | [HF1 | [HF1 | [HF1 |HF1]]]]]]]];subst.
1904
1904
+++ (* case BLeft *)
1905
1905
apply AdequacyTri1 in H4.
@@ -2017,14 +2017,14 @@ Proof with InvTac.
2017
2017
destruct H4; subst.
2018
2018
destruct H4; subst.
2019
2019
apply H with (m:=n1) in H4;
2020
- [|repeat apply Nat.le_le_succ_r; auto].
2020
+ [|repeat apply Nat.le_le_succ_r; auto].
2021
2021
destruct H4 as [n1' H4].
2022
2022
assert(HS : encodeFR F :: encodeFL G2 :: encodeList L' =
2023
2023
encodeFR F :: encodeList (G2 :: L')) by reflexivity.
2024
2024
rewrite HS in H5;clear HS.
2025
2025
2026
2026
apply H with (m:=n2) in H5;
2027
- [|repeat apply Nat.le_le_succ_r; auto].
2027
+ [|repeat apply Nat.le_le_succ_r; auto].
2028
2028
2029
2029
destruct H5 as [n2' H5].
2030
2030
0 commit comments