Step
*
of Lemma
ctt-binder-context_wf
No Annotations
ctt-binder-context ∈ ?CubicalContext
⟶ (varname() List)
⟶ CttOp
⟶ very-dep-fun(?CubicalContext;varname() List × CttTerm;a,bt.[[a;snd(bt)]])
BY
{ (Unfold `ctt-binder-context` 0
   THEN RepeatFor 3 ((FunExt THENL [Id; Auto]))
   THEN Reduce 0
   THEN ((VeryDepFunCD''''' THENW Auto)
         THENL [(Reduce 0 THEN Auto THEN MemTypeCD THEN Reduce 0 THEN Auto)
                ((Reduce -1 THEN Reduce 0)
                  THEN (MemCD THENA Auto)
                  THEN ((BoolCase ⌜||L|| <z ||ctt-arity(x2)||⌝⋅ THENA Auto) THEN Try (Declaration))
                  THEN (BoolCase ⌜(||fst(bt)|| =z fst(ctt-arity(x2)[||L||]))⌝⋅ THENA Auto)
                  THEN Try (Declaration)
                  THEN (BoolCase ⌜bdd-all(||L||;i.(ctt-kind(snd(fst(snd(L[i])))) =z snd(ctt-arity(x2)[i])))⌝⋅
                        THENA Auto
                        )
                  THEN Try (Declaration)
                  THEN MemCD
                  THEN Try (Declaration)
                  THEN ((D -4 THEN Reduce 0 THEN Declaration) ORELSE ((MemTypeCD THENW Auto) THEN Try (Declaration))))]
   )
   THEN (Assert bind-provision(x;ctxt.OK(ctxt)) = x ∈ ?CubicalContext BY
               Auto)
   THEN BetterSplitAndConcl
   THEN Try (Hypothesis)
   THEN Try ((Intros THEN (RWO "6" 0 THENA Auto)))
   THEN (((RWO "first0" 0 THENA Auto) THEN Reduce 0 THEN (BoolCase ⌜0 <z ||ctt-arity(x2)||⌝⋅ THENA Auto))
         ORELSE ((RWO "length_firstn" 0 THENA Auto) THEN (BoolCase ⌜1 <z ||ctt-arity(x2)||⌝⋅ THENA Auto))
         ORELSE ((RWO "assert-bdd-all" (-4) THENA Auto) THEN ParallelOp -4 THEN RW assert_pushdownC (-1) THEN Auto))
   THEN ((RepUR ``bdd-all`` 0 THEN (RWW "band_tt" 0 THENA Auto)) THEN (RWW "select-firstn" 0 THENA Auto))
   THEN (SplitOnConclITE THENA Auto)
   THEN Try (Trivial)
   THEN RepUR ``provisional-subterm-context`` 0
   THEN (RWW "band_ff" 0 THENA Auto)
   THEN Reduce 0
   THEN RepUR ``ctt-subterm-context`` 0
   THEN RepeatFor 2 (((RWW "band_ff band_tt length_firstn" 0 THENA Auto) THEN Reduce 0))
   THEN SplitOrHyps
   THEN OnSomeHyp (\h. ((FLemma `ctt-opr-is-implies` [h] THENA Auto)
                        THEN HypSubst' (-1) 0
                        THEN RepUR ``ctt-opr-is`` 0
                        THEN Auto))⋅) }
Latex:
Latex:
No  Annotations
ctt-binder-context  \mmember{}  ?CubicalContext
{}\mrightarrow{}  (varname()  List)
{}\mrightarrow{}  CttOp
{}\mrightarrow{}  very-dep-fun(?CubicalContext;varname()  List  \mtimes{}  CttTerm;a,bt.[[a;snd(bt)]])
By
Latex:
(Unfold  `ctt-binder-context`  0
  THEN  RepeatFor  3  ((FunExt  THENL  [Id;  Auto]))
  THEN  Reduce  0
  THEN  ((VeryDepFunCD'''''  THENW  Auto)
              THENL  [(Reduce  0  THEN  Auto  THEN  MemTypeCD  THEN  Reduce  0  THEN  Auto)
                          ;  ((Reduce  -1  THEN  Reduce  0)
                                THEN  (MemCD  THENA  Auto)
                                THEN  ((BoolCase  \mkleeneopen{}||L||  <z  ||ctt-arity(x2)||\mkleeneclose{}\mcdot{}  THENA  Auto)  THEN  Try  (Declaration))
                                THEN  (BoolCase  \mkleeneopen{}(||fst(bt)||  =\msubz{}  fst(ctt-arity(x2)[||L||]))\mkleeneclose{}\mcdot{}  THENA  Auto)
                                THEN  Try  (Declaration)
                                THEN  (BoolCase 
                                            \mkleeneopen{}bdd-all(||L||;i.(ctt-kind(snd(fst(snd(L[i]))))  =\msubz{}  snd(ctt-arity(x2)[i])))\mkleeneclose{}\mcdot{}
                                            THENA  Auto
                                            )
                                THEN  Try  (Declaration)
                                THEN  MemCD
                                THEN  Try  (Declaration)
                                THEN  ((D  -4  THEN  Reduce  0  THEN  Declaration)
                                ORELSE  ((MemTypeCD  THENW  Auto)  THEN  Try  (Declaration))
                                ))]
  )
  THEN  (Assert  bind-provision(x;ctxt.OK(ctxt))  =  x  BY
                          Auto)
  THEN  BetterSplitAndConcl
  THEN  Try  (Hypothesis)
  THEN  Try  ((Intros  THEN  (RWO  "6"  0  THENA  Auto)))
  THEN  (((RWO  "first0"  0  THENA  Auto)
                THEN  Reduce  0
                THEN  (BoolCase  \mkleeneopen{}0  <z  ||ctt-arity(x2)||\mkleeneclose{}\mcdot{}  THENA  Auto))
              ORELSE  ((RWO  "length\_firstn"  0  THENA  Auto)
                              THEN  (BoolCase  \mkleeneopen{}1  <z  ||ctt-arity(x2)||\mkleeneclose{}\mcdot{}  THENA  Auto)
                              )
              ORELSE  ((RWO  "assert-bdd-all"  (-4)  THENA  Auto)
                              THEN  ParallelOp  -4
                              THEN  RW  assert\_pushdownC  (-1)
                              THEN  Auto))
  THEN  ((RepUR  ``bdd-all``  0  THEN  (RWW  "band\_tt"  0  THENA  Auto))
              THEN  (RWW  "select-firstn"  0  THENA  Auto)
              )
  THEN  (SplitOnConclITE  THENA  Auto)
  THEN  Try  (Trivial)
  THEN  RepUR  ``provisional-subterm-context``  0
  THEN  (RWW  "band\_ff"  0  THENA  Auto)
  THEN  Reduce  0
  THEN  RepUR  ``ctt-subterm-context``  0
  THEN  RepeatFor  2  (((RWW  "band\_ff  band\_tt  length\_firstn"  0  THENA  Auto)  THEN  Reduce  0))
  THEN  SplitOrHyps
  THEN  OnSomeHyp  (\mbackslash{}h.  ((FLemma  `ctt-opr-is-implies`  [h]  THENA  Auto)
                                            THEN  HypSubst'  (-1)  0
                                            THEN  RepUR  ``ctt-opr-is``  0
                                            THEN  Auto))\mcdot{})
Home
Index