Step
*
3
1
of Lemma
longest-prefix_property'
1. [T] : Type
2. L : T
3. L1 : T List
4. P : T List+ ⟶ 𝔹
⊢ ([] ≤ L1
∧ [] < L1 supposing 0 < ||L1||
∧ ((([] = [] ∈ (T List)) ∧ (∀L':T List. ([] < L' 
⇒ L' < L1 
⇒ (¬↑(P [L / L'])))))
  ∨ (0 < 0 ∧ (↑(P [L])) ∧ (∀L':T List. ([] < L' 
⇒ L' < L1 
⇒ (¬↑(P [L / L'])))))))
⇒ (if null(L1) then []
    if P [L] then [L]
    else []
    fi  ≤ [L / L1]
   ∧ if null(L1) then [] if P [L] then [L] else [] fi  < [L / L1] supposing 0 < ||L1|| + 1
   ∧ (((if null(L1) then [] if P [L] then [L] else [] fi  = [] ∈ (T List))
     ∧ (∀L':T List. ([] < L' 
⇒ L' < [L / L1] 
⇒ (¬↑(P L')))))
     ∨ (0 < ||if null(L1) then []
        if P [L] then [L]
        else []
        fi ||
       ∧ (↑(P if null(L1) then [] if P [L] then [L] else [] fi ))
       ∧ (∀L':T List. (if null(L1) then [] if P [L] then [L] else [] fi  < L' 
⇒ L' < [L / L1] 
⇒ (¬↑(P L')))))))
BY
{ xxx((RenameVar `u' 2 THEN RenameVar `v' 3) THEN DVar `v' THEN Reduce 0 THEN Auto)xxx }
1
1. [T] : Type
2. u : T
3. P : T List+ ⟶ 𝔹
4. [] ≤ []
5. [] < [] supposing 0 < 0
6. (([] = [] ∈ (T List)) ∧ (∀L':T List. ([] < L' 
⇒ L' < [] 
⇒ (¬↑(P [u / L'])))))
∨ (0 < 0 ∧ (↑(P [u])) ∧ (∀L':T List. ([] < L' 
⇒ L' < [] 
⇒ (¬↑(P [u / L'])))))
7. [] ≤ [u]
8. 0 < 1
⊢ [] < [u]
2
1. [T] : Type
2. u : T
3. P : T List+ ⟶ 𝔹
4. [] ≤ []
5. [] < [] supposing 0 < 0
6. (([] = [] ∈ (T List)) ∧ (∀L':T List. ([] < L' 
⇒ L' < [] 
⇒ (¬↑(P [u / L'])))))
∨ (0 < 0 ∧ (↑(P [u])) ∧ (∀L':T List. ([] < L' 
⇒ L' < [] 
⇒ (¬↑(P [u / L'])))))
7. [] ≤ [u]
8. [] < [u] supposing 0 < 1
⊢ (([] = [] ∈ (T List)) ∧ (∀L':T List. ([] < L' 
⇒ L' < [u] 
⇒ (¬↑(P L')))))
∨ (0 < 0 ∧ (↑(P [])) ∧ (∀L':T List. ([] < L' 
⇒ L' < [u] 
⇒ (¬↑(P L')))))
3
1. [T] : Type
2. u : T
3. u1 : T
4. v : T List
5. P : T List+ ⟶ 𝔹
6. [] ≤ [u1 / v]
7. [] < [u1 / v] supposing 0 < ||v|| + 1
8. (([] = [] ∈ (T List)) ∧ (∀L':T List. ([] < L' 
⇒ L' < [u1 / v] 
⇒ (¬↑(P [u / L'])))))
∨ (0 < 0 ∧ (↑(P [u])) ∧ (∀L':T List. ([] < L' 
⇒ L' < [u1 / v] 
⇒ (¬↑(P [u / L'])))))
⊢ if P [u] then [u] else [] fi  ≤ [u; [u1 / v]]
4
1. [T] : Type
2. u : T
3. u1 : T
4. v : T List
5. P : T List+ ⟶ 𝔹
6. [] ≤ [u1 / v]
7. [] < [u1 / v] supposing 0 < ||v|| + 1
8. (([] = [] ∈ (T List)) ∧ (∀L':T List. ([] < L' 
⇒ L' < [u1 / v] 
⇒ (¬↑(P [u / L'])))))
∨ (0 < 0 ∧ (↑(P [u])) ∧ (∀L':T List. ([] < L' 
⇒ L' < [u1 / v] 
⇒ (¬↑(P [u / L'])))))
9. if P [u] then [u] else [] fi  ≤ [u; [u1 / v]]
10. 0 < (||v|| + 1) + 1
⊢ if P [u] then [u] else [] fi  < [u; [u1 / v]]
5
1. [T] : Type
2. u : T
3. u1 : T
4. v : T List
5. P : T List+ ⟶ 𝔹
6. [] ≤ [u1 / v]
7. [] < [u1 / v] supposing 0 < ||v|| + 1
8. (([] = [] ∈ (T List)) ∧ (∀L':T List. ([] < L' 
⇒ L' < [u1 / v] 
⇒ (¬↑(P [u / L'])))))
∨ (0 < 0 ∧ (↑(P [u])) ∧ (∀L':T List. ([] < L' 
⇒ L' < [u1 / v] 
⇒ (¬↑(P [u / L'])))))
9. if P [u] then [u] else [] fi  ≤ [u; [u1 / v]]
10. if P [u] then [u] else [] fi  < [u; [u1 / v]] supposing 0 < (||v|| + 1) + 1
⊢ ((if P [u] then [u] else [] fi  = [] ∈ (T List)) ∧ (∀L':T List. ([] < L' 
⇒ L' < [u; [u1 / v]] 
⇒ (¬↑(P L')))))
∨ (0 < ||if P [u] then [u] else [] fi ||
  ∧ (↑(P if P [u] then [u] else [] fi ))
  ∧ (∀L':T List. (if P [u] then [u] else [] fi  < L' 
⇒ L' < [u; [u1 / v]] 
⇒ (¬↑(P L')))))
Latex:
Latex:
1.  [T]  :  Type
2.  L  :  T
3.  L1  :  T  List
4.  P  :  T  List\msupplus{}  {}\mrightarrow{}  \mBbbB{}
\mvdash{}  ([]  \mleq{}  L1
\mwedge{}  []  <  L1  supposing  0  <  ||L1||
\mwedge{}  ((([]  =  [])  \mwedge{}  (\mforall{}L':T  List.  ([]  <  L'  {}\mRightarrow{}  L'  <  L1  {}\mRightarrow{}  (\mneg{}\muparrow{}(P  [L  /  L'])))))
    \mvee{}  (0  <  0  \mwedge{}  (\muparrow{}(P  [L]))  \mwedge{}  (\mforall{}L':T  List.  ([]  <  L'  {}\mRightarrow{}  L'  <  L1  {}\mRightarrow{}  (\mneg{}\muparrow{}(P  [L  /  L'])))))))
{}\mRightarrow{}  (if  null(L1)  then  []
        if  P  [L]  then  [L]
        else  []
        fi    \mleq{}  [L  /  L1]
      \mwedge{}  if  null(L1)  then  []  if  P  [L]  then  [L]  else  []  fi    <  [L  /  L1]  supposing  0  <  ||L1||  +  1
      \mwedge{}  (((if  null(L1)  then  []  if  P  [L]  then  [L]  else  []  fi    =  [])
          \mwedge{}  (\mforall{}L':T  List.  ([]  <  L'  {}\mRightarrow{}  L'  <  [L  /  L1]  {}\mRightarrow{}  (\mneg{}\muparrow{}(P  L')))))
          \mvee{}  (0  <  ||if  null(L1)  then  []
                if  P  [L]  then  [L]
                else  []
                fi  ||
              \mwedge{}  (\muparrow{}(P  if  null(L1)  then  []  if  P  [L]  then  [L]  else  []  fi  ))
              \mwedge{}  (\mforall{}L':T  List
                        (if  null(L1)  then  []
                          if  P  [L]  then  [L]
                          else  []
                          fi    <  L'
                        {}\mRightarrow{}  L'  <  [L  /  L1]
                        {}\mRightarrow{}  (\mneg{}\muparrow{}(P  L')))))))
By
Latex:
xxx((RenameVar  `u'  2  THEN  RenameVar  `v'  3)  THEN  DVar  `v'  THEN  Reduce  0  THEN  Auto)xxx
Home
Index