Skip to content

Commit 3803323

Browse files
muenchnerkindllemmy
authored andcommitted
Add theorem about Head, Tail, and Range with IsInjective(seq).
1 parent d7c054d commit 3803323

File tree

2 files changed

+27
-0
lines changed

2 files changed

+27
-0
lines changed

modules/SequencesExtTheorems.tla

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,11 @@ LEMMA TailTransitivityIsInjective
1616
IsInjective(seq)
1717
PROVE IsInjective(Tail(seq))
1818

19+
LEMMA HeadTailRange ==
20+
ASSUME NEW S, NEW seq \in Seq(S), seq # << >>, IsInjective(seq)
21+
PROVE /\ Head(seq) \in Range(seq)
22+
/\ Range(Tail(seq)) = Range(seq) \ {Head(seq)}
23+
1924
=============================================================================
2025
\* Modification History
2126
\* Last modified Thu Feb 27 11:38:41 PST 2020 by markus

modules/SequencesExtTheorems_proofs.tla

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,28 @@ LEMMA TailTransitivityIsInjective \* With TLAPS 1.4.3
4343
<2>9. QED BY <2>1, <2>2, <2>3, <2>5, <2>6, <2>7, <2>8 DEF IsInjective
4444
<1>2. QED BY <1>1
4545

46+
LEMMA HeadTailRange == \* With TLAPS 1.4.5 (but not 1.4.3)
47+
ASSUME NEW S, NEW seq \in Seq(S), seq # << >>, IsInjective(seq)
48+
PROVE /\ Head(seq) \in Range(seq)
49+
/\ Range(Tail(seq)) = Range(seq) \ {Head(seq)}
50+
<1>1. Head(seq) \in Range(seq)
51+
BY SMT DEF Range
52+
<1>2. Range(Tail(seq)) \subseteq Range(seq)
53+
BY SMT DEF Range
54+
<1>3. Head(seq) \notin Range(Tail(seq))
55+
BY SMT DEF Range, IsInjective
56+
<1>4. ASSUME NEW x \in Range(seq), x # Head(seq)
57+
PROVE x \in Range(Tail(seq))
58+
<2>1. PICK i \in DOMAIN seq : x = seq[i]
59+
BY Isa DEF Range
60+
<2>2. i # 1
61+
BY SMT, <2>1, <1>4
62+
<2>3. /\ i-1 \in DOMAIN Tail(seq)
63+
/\ x = Tail(seq)[i-1]
64+
BY SMT, <2>1, <2>2
65+
<2>. QED BY Isa, <2>3 DEF Range
66+
<1>. QED BY Isa, <1>1, <1>2, <1>3, <1>4
67+
4668
=============================================================================
4769
\* Modification History
4870
\* Last modified Thu Feb 27 11:44:49 PST 2020 by markus

0 commit comments

Comments
 (0)