diff --git a/TLAplus/SequencesExt.tla b/TLAplus/SequencesExt.tla
deleted file mode 100644
index 8777a477b02c111b9220d748e01cee05bfe8572d..0000000000000000000000000000000000000000
--- a/TLAplus/SequencesExt.tla
+++ /dev/null
@@ -1,145 +0,0 @@
----------------------------- MODULE SequencesExt ----------------------------
-
-LOCAL INSTANCE Sequences
-LOCAL INSTANCE Naturals
-LOCAL INSTANCE FiniteSets
-LOCAL INSTANCE Functions
-  (*************************************************************************)
-  (* Imports the definitions from the modules, but doesn't export them.    *)
-  (*************************************************************************)
-
------------------------------------------------------------------------------
-
-ToSet(s) ==
-  (*************************************************************************)
-  (* The image of the given sequence s. Cardinality(ToSet(s)) <= Len(s)    *)
-  (* see https://en.wikipedia.org/wiki/Image_(mathematics)                 *)
-  (*************************************************************************)
-  { s[i] : i \in DOMAIN s }
-
-IsInjective(s) == 
-  (*************************************************************************)
-  (* TRUE iff the sequence s contains no duplicates where two elements     *)
-  (* a, b of s are defined to be duplicates iff a = b.  In other words,    *)
-  (* Cardinality(ToSet(s)) = Len(s)                                        *)
-  (*                                                                       *)
-  (* This definition is overridden by TLC in the Java class SequencesExt.  *)
-  (* The operator is overridden by the Java method with the same name.     *)
-  (*                                                                       *)
-  (* Also see Functions!Injective operator.                                *)
-  (*************************************************************************)
-  \A i, j \in DOMAIN s: (s[i] = s[j]) => (i = j)
-
-SetToSeq(S) == 
-  (**************************************************************************)
-  (* Convert a set to some sequence that contains all the elements of the   *)
-  (* set exactly once, and contains no other elements.                      *)
-  (**************************************************************************)
-  CHOOSE f \in [1..Cardinality(S) -> S] : IsInjective(f)
-
------------------------------------------------------------------------------
-
-Contains(s, e) ==
-  (**************************************************************************)
-  (* TRUE iff the element e \in ToSet(s).                                   *)
-  (**************************************************************************)
-  \E i \in 1..Len(s) : s[i] = e
-
-Reverse(s) ==
-  (**************************************************************************)
-  (* Reverse the given sequence s:  Let l be Len(s) (length of s).          *)
-  (* Equals a sequence s.t. << S[l], S[l-1], ..., S[1]>>                    *)
-  (**************************************************************************)
-  [ i \in 1..Len(s) |-> s[(Len(s) - i) + 1] ]
-
-Remove(s, e) ==
-    (************************************************************************)
-    (* The sequence s with e removed or s iff e \notin Range(s)             *)
-    (************************************************************************)
-    SelectSeq(s, LAMBDA t: t # e)
-
-ReplaceAll(s, old, new) ==
-  (*************************************************************************)
-  (* Equals the sequence s except that all occurrences of element old are  *)
-  (* replaced with the element new.                                        *)
-  (*************************************************************************)
-  LET F[i \in 0..Len(s)] == 
-        IF i = 0 THEN << >>
-                 ELSE IF s[i] = old THEN Append(F[i-1], new)
-                                    ELSE Append(F[i-1], s[i])
-  IN F[Len(s)]
-
------------------------------------------------------------------------------
-
-\* The operators below have been extracted from the TLAPS module 
-\* SequencesTheorems.tla as of 10/14/2019.  The original comments have been
-\* partially rewritten.
-
-InsertAt(s, i, e) ==
-  (**************************************************************************)
-  (* Inserts element e at the position i moving the original element to i+1 *)
-  (* and so on.  In other words, a sequence t s.t.:                         *)
-  (*   /\ Len(t) = Len(s) + 1                                               *)
-  (*   /\ t[i] = e                                                          *)
-  (*   /\ \A j \in 1..(i - 1): t[j] = s[j]                                  *)
-  (*   /\ \A k \in (i + 1)..Len(s): t[k + 1] = s[k]                         *)
-  (**************************************************************************)
-  SubSeq(s, 1, i-1) \o <<e>> \o SubSeq(s, i, Len(s))
-
-ReplaceAt(s, i, e) ==
-  (**************************************************************************)
-  (* Replaces the element at position i with the element e.                 *)
-  (**************************************************************************)
-  [s EXCEPT ![i] = e]
-  
-RemoveAt(s, i) == 
-  (**************************************************************************)
-  (* Replaces the element at position i shortening the length of s by one.  *)
-  (**************************************************************************)
-  SubSeq(s, 1, i-1) \o SubSeq(s, i+1, Len(s))
-
------------------------------------------------------------------------------
-
-Front(s) == 
-  (**************************************************************************)
-  (* The sequence formed by removing its last element.                      *)
-  (**************************************************************************)
-  SubSeq(s, 1, Len(s)-1)
-
-Last(s) ==
-  (**************************************************************************)
-  (* The last element of the sequence.                                      *)
-  (**************************************************************************)
-  s[Len(s)]
-
------------------------------------------------------------------------------
-
-IsPrefix(s, t) ==
-  (**************************************************************************)
-  (* TRUE iff the sequence s is a prefix of the sequence t, s.t.            *)
-  (* \E u \in Seq(Range(t)) : t = s \o u. In other words, there exists      *)
-  (* a suffix u that with s prepended equals t.                             *)
-  (**************************************************************************)
-  DOMAIN s \subseteq DOMAIN t /\ \A i \in DOMAIN s: s[i] = t[i]
-
-IsStrictPrefix(s,t) ==
-  (**************************************************************************)
-  (* TRUE iff the sequence s is a prefix of the sequence t and s # t        *)
-  (**************************************************************************)
-  IsPrefix(s, t) /\ s # t
-
-IsSuffix(s, t) ==
-  (**************************************************************************)
-  (* TRUE iff the sequence s is a suffix of the sequence t, s.t.            *)
-  (* \E u \in Seq(Range(t)) : t = u \o s. In other words, there exists a    *)
-  (* prefix that with s appended equals t.                                  *)
-  (**************************************************************************)
-  IsPrefix(Reverse(s), Reverse(t))
-
-IsStrictSuffix(s, t) ==
-  (**************************************************************************)
-  (* TRUE iff the sequence s is a suffix of the sequence t and s # t        *)
-  (**************************************************************************)
-  IsSuffix(s,t) /\ s # t
-
-=============================================================================
\ No newline at end of file
diff --git a/TLAplus/TDMv1/TDM.tla b/TLAplus/TDMv1/TDM.tla
deleted file mode 100644
index cc0d399ce12e95f6b766328c2bdc93b7c34135b4..0000000000000000000000000000000000000000
--- a/TLAplus/TDMv1/TDM.tla
+++ /dev/null
@@ -1,256 +0,0 @@
--------------------------------- MODULE TDM --------------------------------
-(***************************************************************************)
-(* This is a simple TDM arbitration between memory requests                *)
-(* inside a DRAM controller                                                *)
-(***************************************************************************)
-EXTENDS Integers, Reals, Sequences, SequencesExt
-
-CONSTANT
-    BANKS, 
-    t_RCD, \* ACT to RD/WR
-    t_RP,  \* PRE to ACT
-    t_RC,  \* ACT to ACT
-    t_RAS, \* ACT to PRE
-    t_WL,  \* WL to data bus 
-    t_RL,  \* RD to data bus
-    t_RTP, \* RD to PRE
-    t_WR,  \* Enf of a WR to PRE
-    t_RRD, \* ACT to ACT
-    t_FAW, \* Four ACT window  
-    t_RTW,
-    t_WR_to_RD,
-    t_WTR,
-    t_BURST,
-    t_CCD
-
-VARIABLES
-    time,
-    slotOwner,
-    bankState, \* last command sent to the bank
-    lastACT,
-    lastRD,
-    lastWR,
-    lastPRE,
-    lastBUS,
-    bus,
-    slotCounter
-    
-BusDir == {"RD","WR"}
-BusSta == BANKS \cup {"IDLE"}
-tBANKS == SetToSeq(BANKS)
-
-TDMTypeOK ==
-    /\ time \in Int
-    /\ slotOwner \in BANKS
-    /\ bankState \in [BANKS -> {"NOP","PRE","ACT","RD","WR"}]
-    /\ lastPRE \in [BANKS -> Int]
-    /\ lastACT \in [BANKS -> Int]
-    /\ lastRD \in [BANKS -> Int]
-    /\ lastWR \in [BANKS -> Int]
-    /\ lastBUS \in Int
-    /\ bus.ocup \in BusSta
-    /\ bus.dir \in BusDir
-    /\ slotCounter \in 1..Len(tBANKS)
-    
-TDMInit == 
-    /\ time = 0
-    /\ slotOwner = CHOOSE b \in BANKS : TRUE
-    /\ bankState = [b \in BANKS |-> "NOP"]
-    /\ lastPRE = [b \in BANKS |-> 100]
-    /\ lastACT = [b \in BANKS |-> 100]
-    /\ lastRD = [b \in BANKS |-> 100]
-    /\ lastWR = [b \in BANKS |-> 100]
-    /\ lastBUS = 100
-    /\ bus = [ocup |-> "IDLE", dir |-> CHOOSE dir \in {"RD","WR"} : TRUE]
-    /\ slotCounter = 1
-
------------------------------------------------------------------------------
-(***************************************************************************)
-(*                           BUS ACTIONS                                   *)
-(***************************************************************************)
-\* To use the bus, the demanding bank must respect the timing constraints and the bus has to be idle
-UseBus(b) == /\ IF bankState[b] = "RD" THEN lastRD[b] >= t_RL + 1
-                    ELSE IF bankState[b] = "WR" THEN lastWR[b] >= t_WL + 1
-                    ELSE FALSE
-             \* Not optimal, since this restraints that bus can only be used once per slot 
-             /\ lastBUS >= t_BURST + t_WR - 1 + t_RP
-             /\ bus.ocup = "IDLE"
-             /\ bus' = [ocup |-> b, dir |-> IF bankState[b] = "RD" THEN "RD" ELSE "WR"]
-             /\ lastBUS' = 0
-             /\ UNCHANGED <<time,slotOwner,bankState,lastACT,lastPRE,lastRD,lastWR,slotCounter>>
-
-ReleaseBus(b) == /\ lastBUS >= t_BURST
-                 /\ bus.ocup /= "IDLE"
-                 /\ bus' = [bus EXCEPT !.ocup = "IDLE"]
-                 /\ UNCHANGED <<time,slotOwner,bankState,lastACT,lastPRE,lastRD,lastWR,lastBUS,slotCounter>>
------------------------------------------------------------------------------
-(***************************************************************************)
-(*                         THE SCHEDULER ACTIONS                           *)
-(***************************************************************************)
-ACTintraReady(b) ==
-    /\ lastACT[b] >= t_RC
-    /\ lastPRE[b] >= t_RP
-    
-ACTinterReady(b) ==
-    /\ \A m \in BANKS \ {b} : /\ lastACT[m] >= t_RRD
-                              /\ lastACT[m] >= t_FAW
-                                           
-SchACT(b) == /\ bankState[b] = "PRE" \/ bankState[b] = "NOP"
-             \* We consider for now that an ACT can only be scheduled at the beginning of a TDM slot
-             /\ time = 0
-             /\ slotOwner = b    
-             /\ ACTintraReady(b)
-             /\ ACTinterReady(b)
-             /\ bankState' = [bankState EXCEPT ![b] = "ACT"]
-             /\ lastACT' = [lastACT EXCEPT ![b] = 0]
-             /\ UNCHANGED <<time,slotOwner,lastPRE,lastRD,lastWR,bus,lastBUS,slotCounter>>      
-
-RDintraReady(b) ==
-    /\ lastACT[b] >= t_RCD
-    /\ lastRD[b] >= t_CCD
-    /\ lastWR[b] >= t_WR_to_RD
-    
-RDinterReady(b) == 
-    /\ \A m \in BANKS \ {b} : /\ lastRD[m] >= t_CCD                    
-                              /\ lastWR[m] >= t_WR_to_RD
-    /\ IF bus.dir = "WR" THEN lastBUS >= t_WTR + t_BURST ELSE TRUE 
-                                                   
-SchRD(b) == /\ bankState[b] = "ACT"
-            /\ slotOwner = b
-            /\ RDintraReady(b)
-            /\ RDinterReady(b)
-            /\ bankState' = [bankState EXCEPT ![b] = "RD"]
-            /\ lastRD' = [lastRD EXCEPT ![b] = 0]
-            /\ UNCHANGED <<time,slotOwner,lastACT,lastPRE,lastWR,bus,lastBUS,slotCounter>>
-
-WRintraReady(b) ==
-    /\ lastACT[b] >= t_RCD
-    /\ lastRD[b] >= t_RTW
-    /\ lastWR[b] >= t_CCD
-
-WRinterReady(b) == 
-    /\ \A m \in BANKS \ {b} : /\ lastRD[m] >= t_RTW                    
-                              /\ lastWR[m] >= t_CCD
-            
-SchWR(b) == /\ bankState[b] = "ACT" /\ bankState[b] /= "PRE"
-            /\ slotOwner = b
-            /\ WRintraReady(b)
-            /\ WRinterReady(b)
-            /\ bankState' = [bankState EXCEPT ![b] = "WR"]
-            /\ lastWR' = [lastWR EXCEPT ![b] = 0]
-            /\ UNCHANGED <<time,slotOwner,lastACT,lastPRE,lastRD,bus,lastBUS,slotCounter>>          
-
-PREintraReady(b) == 
-    /\ lastACT[b] >= t_RAS
-    /\ lastRD [b] >= t_RTP
-    \* Not the best, this is considering there will be only one use of the BUS per slot
-    /\ IF bus.dir = "WR" THEN lastBUS >= t_WR - 1 + t_BURST ELSE TRUE
-
-SchPRE(b) == /\ bankState[b] = "RD" \/ bankState[b] = "WR"
-             /\ slotOwner = b
-             /\ PREintraReady(b)
-             /\ bankState' = [bankState EXCEPT ![b] = "PRE"]
-             /\ lastPRE' = [lastPRE EXCEPT ![b] = 0]
-             /\ UNCHANGED <<time,slotOwner,lastACT,lastRD,lastWR,bus,lastBUS,slotCounter>>
-
-UpdateSlotOwner ==
-    /\ slotCounter' = IF slotCounter = Len(tBANKS) - 1
-                          THEN 1
-                          ELSE slotCounter + 1
-    /\ slotOwner' = tBANKS[slotCounter+1]
-
-SlotLength == t_RCD + t_WL + t_BURST + t_WR + t_RP
-                                     
-SchChange == /\ slotCounter =< 2
-             /\ time >= SlotLength
-             /\ UpdateSlotOwner
-             /\ time' = 0
-             /\ UNCHANGED <<bankState,lastACT,lastRD,lastWR,lastPRE,bus,lastBUS>>                             
------------------------------------------------------------------------------
-(***************************************************************************)
-(*                           TIME ACTIONS                                  *)
-(***************************************************************************)
-UpdateDelays ==
-    /\ lastACT' = [b \in BANKS |-> lastACT[b] + 1]
-    /\ lastRD' = [b \in BANKS |-> lastRD[b] + 1]
-    /\ lastWR' = [b \in BANKS |-> lastWR[b] + 1] 
-    /\ lastPRE' = [b \in BANKS |-> lastPRE[b] + 1]
-    /\ lastBUS' = lastBUS + 1
-    
-Step ==
-    \* A step can only happen if scheduling / bus actions are not enabled
-    /\ \A b \in BANKS : /\ \neg (ENABLED SchACT(b))
-                        /\ \neg (ENABLED SchRD(b))
-                        /\ \neg (ENABLED SchWR(b))
-                        /\ \neg (ENABLED SchPRE(b))
-                        /\ \neg (ENABLED UseBus(b))
-                        /\ \neg (ENABLED ReleaseBus(b))
-    /\ \neg (ENABLED SchChange)
-    /\ slotCounter =< 2
-    /\ time' = time + 1
-    /\ UpdateDelays
-    /\ UNCHANGED<<slotOwner,bankState,bus,slotCounter>>
------------------------------------------------------------------------------
-TDMNext ==
-    \/ Step
-    \/ \E b \in BANKS : \/ SchACT(b)
-                        \/ SchPRE(b)
-                        \/ SchRD(b)
-                        \/ SchWR(b)
-                        \/ UseBus(b)
-                        \/ ReleaseBus(b)
-    \/ SchChange
------------------------------------------------------------------------------
-vars == <<time,slotOwner,bankState,lastACT,lastPRE,lastRD,lastWR,lastBUS,bus,slotCounter>>
-(***************************************************************************)
-(* Stong fairness of TDMNext states that if there is a non stuttering      *)
-(* action possible TDMNext it must happen                                  *)
-(***************************************************************************)
-TDMSpec == /\ TDMInit 
-           /\ [][TDMNext]_vars
-           /\ SF_vars(TDMNext)
------------------------------------------------------------------------------
-\* Temporal properties
-(***************************************************************************)
-(* TDMTemp1 states that if a RD or a WR has been scheduled to a certain    *)
-(* bank, then the bus will eventually by occupied by the requestor         *)
-(* TDMTemp2 states that if a requestor owns the slot that eventually a RD  *)
-(* will be issued                                                          *)
-(***************************************************************************)
-\* How can I check that things happen in the same slot (time < 0) ?
-TDMTemp1 == 
-    /\ \A b \in BANKS : bankState[b] \in {"RD","WR"} ~> bus.ocup = b
-
-TDMTemp2 == 
-    /\ \A b \in BANKS : slotOwner = b ~> bankState[b] = "RD"
-    
-\* Ensures that changing slots will happen
-TDMChange == 
-    []<><<SchChange>>_vars
-    
-TDMLimit ==
-    <>(slotCounter = 3)
------------------------------------------------------------------------------
-\*Invariants
-(***************************************************************************)
-(* TDMValidity1 states that if a RD or a WR has been scheduled for a       *)
-(* certain bank, than the requestor owner of that bank owns the TDM slot   *)
-(* TDMValidity2 states that if a certain bank b doesn't own the slot, than *)
-(* the last command sent to it must have been a NOP or a PRE               *)
-(***************************************************************************)
-TDMValidity1 ==
-    /\ \A b \in BANKS : bankState[b] \in {"RD","WR"} => slotOwner = b
-
-TDMValidity2 ==
-    /\ \A b \in BANKS : slotOwner /= b => bankState[b] \in {"NOP", "PRE"}
-    
-IntraBankConstraints ==
-    /\ \A b \in BANKS : CASE ENABLED SchRD(b) -> lastACT[b] >= t_RCD /\ lastRD[b] >= t_RTW /\ lastWR[b] >= t_WR_to_RD                                                  
-                          [] ENABLED SchWR(b) -> lastACT[b] >= t_RCD /\ lastRD[b] >= t_RTW /\ lastWR[b] >= t_CCD
-                          [] ENABLED SchACT(b) -> lastACT[b] >= t_RC /\ lastPRE[b] >= t_RP
-                          [] ENABLED SchPRE(b) -> lastACT[b] >= t_RAS /\ lastRD [b] >= t_RTP /\ IF bus.dir = "WR" THEN lastBUS >= t_WR - 1 + t_BURST ELSE TRUE
-                          [] OTHER -> TRUE         
-=============================================================================
-\* Modification History
-\* Last modified Wed Feb 10 11:42:39 CET 2021 by felipe
-\* Created Mon Jan 18 10:05:32 CET 2021 by felipe
diff --git a/TLAplus/TDMv2/RT_TDMv2.tla b/TLAplus/TDMv2/RT_TDMv2.tla
deleted file mode 100644
index c4a4ac52d8fc1e1e82f7b1f877cc1e39d3385ea9..0000000000000000000000000000000000000000
--- a/TLAplus/TDMv2/RT_TDMv2.tla
+++ /dev/null
@@ -1,36 +0,0 @@
------------------------------- MODULE RT_TDMv2 ------------------------------
-EXTENDS TDMv2, RealTimeNew, Sequences
-
-CONSTANTS
-    t_RCD
-    
-VARIABLE
-    t1,
-    t2,
-    t3,
-    t4
-
-BigInit == 
-    /\ Init
-    /\ now = 0
-    /\ t1 = 0 
-    /\ t2 = 0
-    /\ t3 = 0
-
-\* The time constraints go here
-BigNext ==
-    /\ (Next \/ UNCHANGED<<vars>>)
-    /\ (NowNext(vars) \/ now' = now)
-    \*Intra-bank constraints
-    /\ \A b \in BANKS : /\ IntervalLB(t1,{},IssueRD(b),vars,t_RCD,TRUE)
-                        /\ IntervalLB(t2,{},IssueWR(b),vars,t_RCD,TRUE)
-                        /\ IntervalLB(t2,IssueRD(b),IssuePRE(b),vars,t_RAS,TRUE)
-                        /\ DurationValue(TRUE,t3,IssueACT(b),vars,t_RRD)
-    \*Inter-bank constraints
-    /\ \A tb \in BANKS : \A ob \in BANKS \ {b} : /\ IntervalLB(t4,{IssueRD(ob),IssuePRE(ob)},IssueACT(tb),vars,t_RRD,TRUE) 
-                                                 /\ 
-    
-=============================================================================
-\* Modification History
-\* Last modified Fri Feb 12 16:37:42 CET 2021 by felipe
-\* Created Fri Feb 12 15:42:50 CET 2021 by felipe
diff --git a/TLAplus/TDMv2/RealTimeNew.tla b/TLAplus/TDMv2/RealTimeNew.tla
deleted file mode 100644
index 8a052638f610ada057c5fda253e77dc059529c0a..0000000000000000000000000000000000000000
--- a/TLAplus/TDMv2/RealTimeNew.tla
+++ /dev/null
@@ -1,119 +0,0 @@
----------------------------- MODULE RealTimeNew ----------------------------
-EXTENDS Reals
-
-VARIABLE now
-
-----------------------------------------------------------------------------
-(***************************************************************************)
-(* 1. Time Passing                                                         *)
-(***************************************************************************)
-NowNext(v) ==
-    /\ now' \in {r \in Real : r > now}
-    /\ UNCHANGED v
-----------------------------------------------------------------------------
-(***************************************************************************)
-(* 2. Constraints on duration of actions                                   *)
-(***************************************************************************)
-DurationBound(STRflag,t,A,v,min,lb,max,ub) ==
-LET TNext == t' = IF <<A>>_v \/ \neg(ENABLED <<A>>_v)'
-                     THEN 0
-                     ELSE t + (now' - now)
-    UpperBound == IF STRflag = TRUE
-                     THEN IF ub THEN t' =< max ELSE t' < max
-                     ELSE A => IF ub THEN t =< max ELSE t < max
-    LowerBound == A => IF lb THEN t >= min ELSE t > min
-IN /\ TNext
-   /\ UpperBound
-   /\ LowerBound
-   
-DurationUB(STRflag,t,A,v,max,ub) ==
-LET TNext == t' = IF <<A>>_v \/ \neg(ENABLED <<A>>_v)'
-                     THEN 0
-                     ELSE t + (now' - now)
-    UpperBound == IF STRflag = TRUE
-                     THEN IF ub THEN t' =< max ELSE t' < max
-                     ELSE A => IF ub THEN t =< max ELSE t < max
-IN /\ TNext
-   /\ UpperBound
-
-DurationLB(t,A,v,min,lb) ==
-LET TNext == t' = IF <<A>>_v \/ \neg(ENABLED <<A>>_v)'
-                     THEN 0
-                     ELSE t + (now' - now)
-    LowerBound == A => IF lb THEN t >= min ELSE t > min
-IN /\ TNext
-   /\ LowerBound
-   
-DurationValue(STRflag,t,A,vars,val) ==
-LET TNext == t' = IF <<A>>_vars \/ \neg(ENABLED <<A>>_vars)'
-                     THEN 0
-                     ELSE t + (now' - now)
-    ValueBound == IF STRflag = TRUE THEN t' = val ELSE A => t = val                   
-IN /\ TNext
-   /\ ValueBound
-----------------------------------------------------------------------------
-(***************************************************************************)
-(* 3. Constraints on time interval between actions                         *)
-(***************************************************************************)
-IntervalBound(STRflag,t,Acts,B,v,min,lb,max,ub) ==
-LET TNext == t' = IF <<B>>_v \/ \neg(ENABLED <<Acts \/ B>>_v)'
-                     THEN 0
-                     ELSE t + (now' - now)
-    UpperBound == IF STRflag = TRUE
-                     THEN IF ub THEN t' =< max ELSE t' < max
-                     ELSE B => IF ub THEN t =< max ELSE t < max
-    LowerBound == B => IF lb THEN t >= min ELSE t > min
-IN /\ TNext
-   /\ UpperBound
-   /\ LowerBound
-   
-IntervalUB(STRflag,t,Acts,B,v,max,ub)== 
-LET TNext == t' = IF <<B>>_v \/ \neg(ENABLED <<Acts \/ B>>_v)'
-                     THEN 0
-                     ELSE t + (now' - now)
-    UpperBound == IF STRflag = TRUE
-                     THEN IF ub THEN t' =< max ELSE t' < max
-                     ELSE B => IF ub THEN t =< max ELSE t < max
-IN /\ TNext
-   /\ UpperBound
-
-IntervalLB(t,Acts,B,v,min,lb) ==
-LET TNext == t' = IF <<B>>_v \/ \neg(ENABLED <<Acts \/ B>>_v)'
-                     THEN 0
-                     ELSE t + (now' - now)
-    LowerBound == B => IF lb THEN t >= min ELSE t > min
-IN /\ TNext
-   /\ LowerBound
-   
-IntervalValue(STRflag,t,Acts,B,vars,val) ==
-LET TNext == t' = IF <<B>>_vars \/ \neg(ENABLED <<Acts \/ B>>_vars)'
-                     THEN 0
-                     ELSE t + (now' - now)
-    ValueBound == IF STRflag = TRUE THEN t' = val ELSE B => t = val
-IN /\ TNext
-   /\ ValueBound
-----------------------------------------------------------------------------
-(***************************************************************************)
-(* 4. Advanced Time Patterns                                               *)
-(***************************************************************************)
-\* A execution is delayed by val time units
-Delay(A,val,t,vars) == 
-    DurationValue(TRUE,t,A,vars,val)
-    
-\* A must terminate at max at t
-Deadline(A,val,t,vars) ==
-    DurationUB(TRUE,t,A,vars,val,TRUE)
-
-\* If A does not occur in val time units, then execute the action B
-Timeout(A,B,val,t1,t2,vars) ==
-    /\ DurationUB(FALSE,t1,A,vars,val,TRUE)
-    /\ DurationValue(TRUE,t2,B,vars,val)
-(***************************************************************************)
-(* Non-Zeno Condition                                                      *)
-(***************************************************************************)
-RTFairness(v) ==
-    \A r \in Real : WF_now(NowNext(v) /\ (now' > r))
-=============================================================================
-\* Modification History
-\* Last modified Fri Feb 12 14:56:41 CET 2021 by felipe
-\* Created Fri Feb 12 13:13:32 CET 2021 by felipe
diff --git a/TLAplus/TDMv2/TDMv2.tla b/TLAplus/TDMv2/TDMv2.tla
deleted file mode 100644
index 506641985732848cc2462e2125565fb986157d7e..0000000000000000000000000000000000000000
--- a/TLAplus/TDMv2/TDMv2.tla
+++ /dev/null
@@ -1,78 +0,0 @@
-------------------------------- MODULE TDMv2 -------------------------------
-(***************************************************************************)
-(* This is the functional module explaining the working mechanisms of TDM, *)
-(* time related expressions are decribed in RealTimeNew                    *)
-(***************************************************************************)
-EXTENDS Integers, Reals, Sequences, SequencesExt, FiniteSets
-
-CONSTANTS BANKS, REQUESTORS
-
-\* On a private bank policy, each requestor is served in a different DRAM bank
-ASSUME Cardinality(BANKS) = Cardinality(REQUESTORS)
-
-\* This is the set of banks converted to a sequence (tuple)
-tBANKS == SetToSeq(BANKS)
-
-VARIABLES
-    slotOwner,
-    slotCounter,
-    lastCmd,
-    bus_dir,
-    bus_status
-
-BusDir == {"RD","WR"}
-BusStatus == {"IDLE","BUSY"}
-
-TypeOK == 
-    /\ slotOwner \in BANKS
-    /\ slotCounter \in 1..Len(tBANKS)
-    /\ lastCmd \in [BANKS -> {"NOP","PRE","ACT","RD","WR"}]
-    /\ bus_dir \in BusDir
-    /\ bus_status \in BusStatus   
------------------------------------------------------------------------------
-(***************************************************************************)
-(* Initial Predicate                                                       *)
-(***************************************************************************)
-Init ==
-    /\ slotOwner = CHOOSE b \in BANKS : TRUE
-    /\ slotCounter = 0
-    /\ lastCmd = [b \in BANKS |-> "NOP"]
-    /\ bus_dir = CHOOSE v \in BusDir : TRUE
-    /\ bus_status = CHOOSE v \in BusStatus : TRUE
-    
-(***************************************************************************)
-(* Scheduler Actions                                                       *)
-(***************************************************************************)
-IssueACT(b) == /\ lastCmd[b] \in {"NOP","PRE"}
-               /\ slotOwner = b
-               /\ lastCmd' = [lastCmd EXCEPT ![b] = "ACT"]
-               /\ UNCHANGED <<slotOwner,slotCounter,bus_dir,bus_status>>
-
-IssueRD(b) ==
-
-IssueWR(b) ==
-
-IssuePRE(b) ==
-
-UseBus(b) ==
-
-ReleaseBus(b) ==
-
-SchChange ==
-
-Next == 
-    \/ \E b \in BANKS : \/ IssueACT(b)
-                        \/ IssueRD(b)
-                        \/ IssueWR(b)
-                        \/ IssuePRE(b)
-                        \/ UseBus(b)
-                        \/ ReleaseBus(b)
-    \/ SchChange
------------------------------------------------------------------------------
-vars == <<slotOwner,SlotCounter,lastCmd,bus_dir,bus_status>>
-L == WF_vars(Next)
-Spec == Init /\ [][Next]_vars /\ L
-=============================================================================
-\* Modification History
-\* Last modified Fri Feb 12 15:42:19 CET 2021 by felipe
-\* Created Fri Feb 12 11:43:19 CET 2021 by felipe
diff --git a/TLAplus/TDMv3/TDMv3.tla b/TLAplus/TDMv3/TDMv3.tla
deleted file mode 100644
index e1fab612bf1c9ae19138d2fcfd5abc10cf9c00b9..0000000000000000000000000000000000000000
--- a/TLAplus/TDMv3/TDMv3.tla
+++ /dev/null
@@ -1,288 +0,0 @@
-------------------------------- MODULE TDMv3 -------------------------------
-EXTENDS Naturals, FiniteSets, Sequences, SequencesExt
-
-(***************************************************************************)
-(* Utility functions                                                       *)
-(***************************************************************************)
-Max(S) == CHOOSE x \in S : \A y \in S : x >= y
-Min(S) == CHOOSE x \in S : \A y \in S : x =< y
-ModuloSum(a,b,max) == IF a + b =< max THEN a + b ELSE max - ((a+b)%max)
-
-CONSTANTS
-    CrRq,               \* The set of critical requestors
-    NCrRq,              \* The set of non-critical requestors
-    AllBanks,           \* The set of DRAM private banks
-    Mapping,            \* Bank Adress Maping 
-    TDM_Slot,           \* The length of the TDM slot
-    Queue_Capacity      \* The capacity of the request queue
-
-\*This produces a function that maps requestors to banks
-Requestors == CrRq \cup NCrRq
-tMapping == SetToSeq(Mapping)
-BankMapping == [req \in Requestors |-> tMapping[req]]
-
-ASSUME
-  /\ Cardinality(Requestors) = Cardinality(Mapping)
-
-NumberOfSlots == Cardinality(CrRq)
-  
-(***************************************************************************)
-(* In TLA+ language, arrays are functions, and can be also seen as a hash  *)
-(* map.  A record is a analogue to a data structure, where which field is  *)
-(* also a function.  So, it can also be seen as a two variable function,   *)
-(* or a matrix.  And finally, in this module, we have a tuple (or          *)
-(* sequence) of records, which is analogue to 3d function                  *)
-(***************************************************************************)
-
-VARIABLES
-    time,
-    control,
-    req_under_treatment,
-    queue,
-    request_count,
-    slot_count,
-    slot_owner,
-    row_buffer,
-    slack,
-    bank_state,
-    timer
-    
-vars == <<time,control,req_under_treatment,queue,request_count,
-          slot_count,slot_owner,row_buffer,slack,bank_state,timer>>
-
-CMDS == {"NOP","ACT","RD","BUS","WR","PRE","REF"}
-Control == {"IDLE","ARRIVAL","TREATMENT","COMPLETED"}
-
-\*Limit the model checking
-max_time == 50
-max_slots == 10
-max_requests == 100
-
-\* For now there are no type constraints on : queue, req_under_treatment
-
-TypeOK ==
-    /\ time \in 0..500
-    /\ control \in Control
-    /\ request_count \in [Requestors -> 0..max_requests]
-    /\ slot_count \in 1..10
-    /\ slot_owner \in 1..NumberOfSlots
-    /\ row_buffer \in [AllBanks -> {"OPEN","CLOSED"}]
-    /\ slack \in [CrRq -> Nat]
-    /\ bank_state \in [AllBanks -> CMDS]
-    
-(***************************************************************************)
-(* O problema de usar o modelo com contatdores e clocks (ideal e seguro) é *)
-(* a complexidade de checagem do modelo.  Pode-se argumentar então que o   *)
-(* modelo aqui representado não corresponde exatamente ao controlador.  O  *)
-(* controlador implementado em hardware seria correto por design (timing   *)
-(* constraints usadas como contadores) ou baseado em um modelo tal que     *)
-(* esse? O controlador desta especificação não representa o mesmo da outra *)
-(***************************************************************************)
------------------------------------------------------------------------------
-(***************************************************************************)
-(* Init state predicate                                                    *)
-(***************************************************************************)
-Init ==
-    /\ time = 0
-    /\ control = "IDLE"
-    /\ req_under_treatment = [type |-> "NONE",
-                              deadline |-> 0,
-                              target |-> "NONE",
-                              number |-> 0,
-                              owner |-> 0,
-                              issue_date |-> 0,
-                              delayed_issue_date |-> 0,
-                              hit_miss |-> "NONE"]
-    /\ queue = <<>>
-    /\ request_count = [r \in Requestors |-> 0]
-    /\ slot_count = 1
-    /\ slot_owner = 1
-    /\ row_buffer = [b \in AllBanks |-> "CLOSED"]
-    /\ slack = [req \in CrRq |-> 0]
-    /\ bank_state = [b \in AllBanks |-> "NOP"]
-    /\ timer = 0
------------------------------------------------------------------------------
-(***************************************************************************)
-(* Actions that representing the issuing of DRAM commands, they are the    *)
-(* only ones that enable time to elapse                                    *)
-(***************************************************************************)
-IssueACT(bank) ==
-    /\ control = "TREATMENT"
-    /\ bank_state[bank] = "ACT"
-    /\ time' = time + 1
-    /\ bank_state' = IF req_under_treatment.type = "RD" 
-                        THEN [bank_state EXCEPT ![bank] = "RD"]
-                        ELSE [bank_state EXCEPT ![bank] = "WR"]
-    /\ UNCHANGED<<control,req_under_treatment,queue,request_count,
-                  slot_count,slot_owner,row_buffer,slack,timer>>
-                  
-IssueRD(bank) ==
-LET t_RCD == 6
-IN /\ control = "TREATMENT"
-   /\ bank_state[bank] = "RD"
-   /\ time' = time + t_RCD
-   /\ bank_state' = [bank_state EXCEPT ![bank] = "BUS"]
-   /\ UNCHANGED<<control,req_under_treatment,queue,request_count,
-                 slot_count,slot_owner,row_buffer,slack,timer>>
-    
-IssueWR(bank) ==
-LET t_RCD == 6
-IN /\ control = "TREATMENT"
-   /\ bank_state[bank] = "WR"
-   /\ time' = time + t_RCD
-   /\ bank_state' = [bank_state EXCEPT ![bank] = "BUS"]
-   /\ UNCHANGED<<control,req_under_treatment,queue,request_count,
-                 slot_count,slot_owner,row_buffer,slack,timer>>
-
-\* For RD requests, the PRE command can be issued instanteneously, as for WR requests
-\* there is a WR to PRE timing constraint
-IssuePRE(bank) ==
-LET t_WR == 6
-    t_RTP == 4
-    t_RL == 6
-    t_BURST == 4
-IN /\ control = "TREATMENT"
-   /\ control' = "COMPLETED"
-   /\ bank_state[bank] = "PRE"
-   /\ time' = IF req_under_treatment.type = "WR" 
-                 THEN time + t_WR
-                 ELSE IF t_RTP >= t_RL + t_BURST
-                         THEN time + t_RTP - (t_RL + t_BURST)
-                         ELSE time
-   /\ bank_state' = [bank_state EXCEPT ![bank] = "NOP"]
-   /\ req_under_treatment' = [req_under_treatment EXCEPT !.owner = 0]
-   /\ UNCHANGED<<queue,request_count,
-                 slot_count,slot_owner,row_buffer,slack,timer>>
-   
-UsingBus(bank) ==
-LET t_RL == 6
-    t_WL == 5
-    t_BURST == 4
-IN  /\ control = "TREATMENT"
-    /\ bank_state[bank] = "BUS"
-    /\ time' = IF req_under_treatment.type = "RD"
-                  THEN time + t_RL + t_BURST
-                  ELSE time + t_WL + t_BURST
-    /\ bank_state' = [bank_state EXCEPT ![bank] = "PRE"]
-    /\ UNCHANGED<<control,req_under_treatment,queue,request_count,
-                  slot_count,slot_owner,row_buffer,slack,timer>>
------------------------------------------------------------------------------
-\* Have to create a completed action, which will say 
-(***************************************************************************)
-(* This action has to do the following things 1.  Decide which is the next *)
-(* request (on the request queue) is to be treated       2.  Decide which  *)
-(* is the order of commands that has to be issued for that request 3.      *)
-(* Decide to leave the row buffer open or closed based on the amount of    *)
-(* slack gained.                                                           *)
-(***************************************************************************)
-\* Slacks are already considered in the delayed issue date, so, among all requests
-\* in the queue, we choose from EDF.
-treat_request ==
-LET deadlines == {queue[n].deadline : n \in 1..Len(queue)}
-    min_deadline == Min(deadlines)
-    selected_req == SelectSeq(queue, LAMBDA elem: elem.deadline = min_deadline)[1]
-    StartTreatment == /\ queue' = Remove(queue,selected_req)
-                      /\ req_under_treatment' = selected_req
-                      /\ bank_state' = [bank_state EXCEPT ![selected_req.target] = "ACT"]
-    ResumeTreatment == UNCHANGED<<queue,req_under_treatment,bank_state>>
-IN  /\ (control = "ARRIVAL") \/ (control = "COMPLETE" \/ queue /= <<>>) 
-    /\ control' = "TREATMENT"
-    /\ IF req_under_treatment.owner = 0
-          THEN StartTreatment
-          ELSE ResumeTreatment
-    /\ UNCHANGED<<time,request_count,slot_count,slot_owner,row_buffer,slack,timer>>
------------------------------------------------------------------------------
-(***************************************************************************)
-(* Actions that model the arrival of new tasks into the system.  They are  *)
-(* stored in the request queue.                                            *)
-(***************************************************************************)
-\* so_did -> slot owner of the delayed issue date
-\* dist -> distance to the next slot owned by the requestor
-request_arrival(req,ty,hm,arrival_rate) ==
-LET so_did == IF slack[req] >= (slot_count*TDM_Slot - time)
-                THEN ModuloSum((slack[req]%TDM_Slot)+1,slot_owner,NumberOfSlots)
-                ELSE slot_owner
-    dist == IF (time = TDM_Slot*(slot_count - 1)) /\ (req = slot_owner)
-                THEN 0
-                ELSE IF req = so_did 
-                     THEN NumberOfSlots 
-                     ELSE IF req - so_did >= 0 THEN req - so_did ELSE so_did - req
-    calc_deadline == IF req \in CrRq 
-                        THEN TDM_Slot*(slot_count + dist)
-                        ELSE TDM_Slot*(slot_count + 1)
-    request_instance == [number |-> request_count[req] + 1,
-                         owner |-> req,
-                         target |-> BankMapping[req],
-                         issue_date |-> time,
-                         delayed_issue_date |-> time + slack[req],
-                         deadline |-> calc_deadline,
-                         type |-> ty,
-                         hit_miss |-> hm]
-\* Requist arrival
-\* 1. Only one request per requestor in the queue
-\* 2. No consecutive arrivals
-\* 3. There are at least arrival_rate cycles between two requests of the same requestor
-IN /\ req \notin {queue[n].owner : n \in 1..Len(queue)}
-   /\ control /= "ARRIVAL"
-   /\ time - request_count[req]*arrival_rate >= 0
-   /\ control' = "ARRIVAL"
-   /\ request_count' = [request_count EXCEPT ![req] = request_count[req] + 1]
-   /\ queue' = Append(queue,request_instance) 
-   /\ UNCHANGED<<time,req_under_treatment,slot_count,slot_owner,row_buffer,slack,bank_state,timer>>
------------------------------------------------------------------------------
-\* From RealTimeNew Module
-IntervalLB(t,Acts,B,v,min,lb) ==
-LET TNext == t' = IF <<B>>_v \/ \neg(ENABLED <<Acts \/ B>>_v)'
-                     THEN 0
-                     ELSE t + (time' - time)
-    LowerBound == B => IF lb THEN t >= min ELSE t > min
-IN /\ TNext
-   /\ LowerBound
------------------------------------------------------------------------------
-(***************************************************************************)
-(* Next Predicate                                                          *)
-(***************************************************************************)
-Next ==
-    \/ request_arrival(1,"RD","HIT",10)
-    \/ request_arrival(2,"WR","HIT",20)
-    \/ treat_request
-    \/ \E b \in AllBanks : \/ IssueACT(b)
-                           \/ IssueRD(b)
-                           \/ IssueWR(b)
-                           \/ IssuePRE(b)
-                           \/ UsingBus(b)
-    /\ LET t_RCD == 6 IN \A b \in AllBanks: IntervalLB(timer,TRUE,IssueRD(b),vars,t_RCD,TRUE)
------------------------------------------------------------------------------
-(***************************************************************************)
-(* Fairness and Temporal Formula                                           *)
-(***************************************************************************)
-L == /\ WF_vars(request_arrival(1,"RD","HIT",10))
-     /\ WF_vars(request_arrival(2,"WR","HIT",12))
-     /\ WF_vars(treat_request)
-     /\ \A b \in AllBanks : /\ SF_vars(IssueACT(b))
-                            /\ SF_vars(IssueRD(b))
-                            /\ SF_vars(IssueWR(b))
-                            /\ SF_vars(UsingBus(b))
-                            /\ SF_vars(IssuePRE(b))
-
-Spec == Init /\ [][Next]_vars /\ L
------------------------------------------------------------------------------
-(***************************************************************************)
-(* Invariants                                                              *)
-(***************************************************************************)
-\* The queue never becomes full
-FullQueue == Len(queue) =< Queue_Capacity
-\* The queue never has two requests of the same requestor
-OneRequestInTheQueue == 
-LET Owners == {queue[n].owner : n \in 1..Len(queue)}
-IN \A requestor \in Requestors : Cardinality({owner \in Owners : owner = requestor}) =< 1
-
-(***************************************************************************)
-(* Temporal Properties                                                     *)
-(***************************************************************************)
-\* Requests are eventually served
-MaxTime == <>(time = max_time)
-=============================================================================
-\* Modification History
-\* Last modified Fri Feb 26 18:53:51 CET 2021 by felipe
-\* Created Fri Feb 19 10:11:16 CET 2021 by felipe
diff --git a/TLAplus/TDMv5/TDMv5.tla b/TLAplus/TDMv5/TDMv5.tla
deleted file mode 100644
index f74d19b3074f61286ad3207edb24250efe2690b4..0000000000000000000000000000000000000000
--- a/TLAplus/TDMv5/TDMv5.tla
+++ /dev/null
@@ -1,295 +0,0 @@
-------------------------------- MODULE TDMv5 -------------------------------
-EXTENDS Integers, FiniteSets, Sequences, SequencesExt
-
-\* Utility predicates
-Max2Numbers(a,b) == IF a >= b THEN a ELSE b
-Max(S) == CHOOSE x \in S : \A y \in S : x >= y
-Min(S) == CHOOSE x \in S : \A y \in S : x =< y
-ModuloSum(a,b,max) == IF a + b =< max THEN a + b ELSE max - ((a+b)%max)
-
-CONSTANTS 
-    \* Intra-bank constraints
-    t_RCD,
-    t_RP,
-    t_RC,
-    t_RAS,
-    t_RL,
-    t_WL,
-    t_RTP,
-    t_WR,
-    \* Inter-bank constraints
-    t_RRD,
-    \* Inter- and intra-bank constraints
-    t_RTW,
-    t_WRtoRD,
-    t_CCD,
-    t_WTR,
-    t_BURST,
-    \* Other constants
-    Banks,
-    CrRq,
-    NCrRq,
-    Mapping,
-    Queue_Capacity
-
-\* This creates a function that maps each requestor to a bank
-Requestors == CrRq \cup NCrRq
-tMapping == SetToSeq(Mapping)
-BankMapping == [req \in Requestors |-> tMapping[req]]
-\* Length of the TDM slot. Worst case is a write miss
-TDM_Slot == t_RCD + t_WL + t_BURST + t_WR + t_RP + 1
-\* Peridiocity of the TDM
-TDM_Period == Cardinality(CrRq)
-
-ASSUME
-    /\ Cardinality(Requestors) = Cardinality(Mapping)
-
-VARIABLES
-    cmds_lbtimer, \* Lower bound timers, used for expressing timing constraints. There is one per bank per command type.
-    arvl_lbtimer, \* Upper bound timers, used for modelling arrival of requests. There is one per requestor. Could be any type of timer. SF required.
-    chsl_lbtimer, \* Lower bound timer, used for modelling the change in slot_owner. Coulbe be any type of timer. SF required.
-    now, \* Current time
-    bank_state, \* Used to control the issue of commands to each bank
-    queue, \* A sequence of records containing the requests that have arrived in the system
-    req_under_treatment, \* A record representing the request currently under treatment
-    request_count, \* Counts how many requests per requestor have arrived
-    slot_count, \* Counts how many TDM slots have elapsed at total
-    slot_owner, \* The requestor who currently owns the TDM slot
-    row_buffer, \* A function that maps banks to a row buffer situation, i.e open or closed
-    slack, \* A function that maps each critical request to a value of slack
-    control \* A variable that controls the general advance of the system
-
-vars == <<cmds_lbtimer,arvl_lbtimer,chsl_lbtimer,now,
-          bank_state,queue,req_under_treatment,request_count,slot_count,slot_owner,row_buffer,slack,control>>
-
-\* Auxiliary sets
-CMDS == {"IDLE","USEBUS","RLSBUS","ACT","RD","WR","PRE"}
-CONTROL == {"INIT","ARRIVAL","TREATMENT","COMPLETED"}
------------------------------------------------------------------------------
-\* What is the rule for changing the slot owner ? Have to make an action for that ?
-\* How to express the type predicate for cmds_lbtimer ? 
-\* Bounding time for now
-maxtime == 100
------------------------------------------------------------------------------
-TimeTypeOK ==
-    \* /\ cmds_lbtimer \in [Banks \X {CMDS \{"IDLE"}} -> Int]
-    /\ arvl_lbtimer \in [Requestors -> Int]
-    /\ chsl_lbtimer \in Int
-    /\ now \in 0..maxtime
-
-\* No type invariance for now : req_under_treatment, queue  
-TypeOK ==
-    /\ bank_state \in [Banks -> CMDS]
-    /\ request_count \in [Requestors -> Nat]
-    /\ slot_count \in Nat
-    /\ slot_owner \in 1..Cardinality(CrRq)
-    /\ row_buffer \in [Banks -> {"OPEN","CLOSED"}]
-    /\ slack \in [CrRq -> Nat]
-    /\ control \in CONTROL
-
-Init ==
-    /\ cmds_lbtimer = [b \in Banks, c \in CMDS\{"IDLE"} |-> 0]
-    /\ arvl_lbtimer = [req \in Requestors |-> 0]
-    /\ chsl_lbtimer = 0
-    /\ now = 0
-    /\ bank_state = [b \in Banks |-> "IDLE"]
-    /\ req_under_treatment = [type |-> "NONE",
-                              deadline |-> 0,
-                              target |-> "NONE",
-                              number |-> 0,
-                              owner |-> 0,
-                              issue_date |-> 0,
-                              delayed_issue_date |-> 0,
-                              hit_miss |-> "NONE"]
-    /\ queue = <<>>
-    /\ request_count = [r \in Requestors |-> 0]
-    /\ slot_count = 1
-    /\ slot_owner = 1
-    /\ row_buffer = [b \in Banks |-> "CLOSED"]
-    /\ slack = [req \in CrRq |-> 0]
-    /\ control = "INIT"
------------------------------------------------------------------------------
-Set2dimTimer(a,b,timer,value) == timer' = [timer EXCEPT ![a,b] = value]
-Set1dimTimer(a,timer,value) == timer' = [timer EXCEPT ![a] = value]
-TimedOut_2dim(a,b,timer) == timer[a,b] = 0
-TimedOut_1dim(a,timer) == timer[a] = 0
------------------------------------------------------------------------------
-IssueACT(this_bank) ==
-    /\ bank_state[this_bank] = "ACT"
-    /\ control = "TREATMENT"
-    /\ bank_state' = [bank_state EXCEPT ![this_bank] = "RD"]
-    /\ UNCHANGED<<arvl_lbtimer,chsl_lbtimer,now,queue,req_under_treatment,request_count,slot_count,slot_owner,row_buffer,slack,control>>
-    
-IssueRD(this_bank) ==
-    /\ bank_state[this_bank] = "RD"
-    /\ control = "TREATMENT"
-    \* Checks if command is both intra and inter-ready
-    /\ \A bank \in Banks : TimedOut_2dim(bank,"RD",cmds_lbtimer)
-    \* Sets intra bank timers
-    /\ Set2dimTimer(this_bank,"USEBUS",cmds_lbtimer,t_RL)
-    /\ Set2dimTimer(this_bank,"PRE",cmds_lbtimer,t_RTP)
-    \* Sets inter and inter bank timers
-    /\ \A bank \in Banks : /\ Set2dimTimer(bank,"WR",cmds_lbtimer,t_RTW)
-                           /\ Set2dimTimer(bank,"RD",cmds_lbtimer,t_CCD)
-    /\ bank_state' = [bank_state EXCEPT ![this_bank] = "USEBUS"]
-    /\ UNCHANGED<<arvl_lbtimer,chsl_lbtimer,now,queue,req_under_treatment,request_count,
-                  slot_count,slot_owner,row_buffer,slack,control>>
-
-IssueWR(this_bank) ==
-    /\ bank_state[this_bank] = "WR"
-    /\ control = "TREATMENT"
-    \* Checks if command is both intra and inter-ready
-    /\ \A bank \in Banks : TimedOut_2dim(bank,"RD",cmds_lbtimer)
-    \* Sets intra bank timers
-    /\ Set2dimTimer(this_bank,"USEBUS",cmds_lbtimer,t_WL)
-    /\ Set2dimTimer(this_bank,"PRE",cmds_lbtimer,t_RTP)
-    \* Sets inter bank timers
-    /\ \A other_bank \in Banks \ {this_bank} : Set2dimTimer(other_bank,"RD",cmds_lbtimer,t_WRtoRD)
-    /\ bank_state' = [bank_state EXCEPT ![this_bank] = "USEBUS"]
-    /\ UNCHANGED<<arvl_lbtimer,chsl_lbtimer,now,queue,req_under_treatment,request_count,
-                  slot_count,slot_owner,row_buffer,slack,control>>
-    
-UseBus(this_bank) ==
-    /\ bank_state[this_bank] = "USEBUS"
-    /\ control = "TREATMENT"
-    /\ \A bank \in Banks : TimedOut_2dim(bank,"USEBUS",cmds_lbtimer)
-    /\ \A bank \in Banks : Set2dimTimer(bank,"RLSBUS",cmds_lbtimer,t_BURST)
-    /\ bank_state' = [bank_state EXCEPT ![this_bank] = "RLSBUS"]
-    /\ UNCHANGED<<arvl_lbtimer,chsl_lbtimer,now,queue,req_under_treatment,request_count,
-                  slot_count,slot_owner,row_buffer,slack,control>>
-    
-ReleaseBus(this_bank) ==
-    /\ bank_state[this_bank] = "RLSBUS"
-    /\ control = "TREATMENT"
-    /\ \A bank \in Banks : TimedOut_2dim(bank,"RLSBUS",cmds_lbtimer)
-    /\ IF req_under_treatment.type = "WR"
-          THEN Set2dimTimer(this_bank,"PRE",cmds_lbtimer,t_WR)
-          ELSE TRUE
-    /\ \A bank \in Banks : IF req_under_treatment.type = "WR"
-                              THEN Set2dimTimer(bank,"RD",cmds_lbtimer,t_WTR)
-                              ELSE TRUE
-    /\ bank_state' = [bank_state EXCEPT ![this_bank] = "PRE"]
-    /\ UNCHANGED<<arvl_lbtimer,chsl_lbtimer,now,queue,req_under_treatment,request_count,
-                  slot_count,slot_owner,row_buffer,slack,control>> 
-
-IssuePRE(this_bank) ==
-    /\ bank_state[this_bank] = "PRE"
-    /\ control = "TREATMENT"
-    /\ \A bank \in Banks : TimedOut_2dim(bank,"PRE",cmds_lbtimer)
-    \* Intra-bank : PRE to ACT
-    /\ Set2dimTimer(this_bank,"ACT",cmds_lbtimer,t_RP)
-    \* Complection : bank becomes idle again
-    /\ bank_state' = [bank_state EXCEPT ![this_bank] = "IDLE"]
-    /\ UNCHANGED<<arvl_lbtimer,chsl_lbtimer,now,queue,req_under_treatment,request_count,
-                  slot_count,slot_owner,row_buffer,slack,control>>
------------------------------------------------------------------------------
-treat_request ==
-LET deadlines == {queue[n].deadline : n \in 1..Len(queue)}
-    min_deadline == Min(deadlines)
-    selected_req == SelectSeq(queue, LAMBDA elem: elem.deadline = min_deadline)[1]
-    StartTreatment == /\ queue' = Remove(queue,selected_req)
-                      /\ req_under_treatment' = selected_req
-                      /\ bank_state' = [bank_state EXCEPT ![selected_req.target] = "ACT"]
-    ResumeTreatment == UNCHANGED<<queue,req_under_treatment,bank_state>>
-IN /\ (control = "ARRIVAL") \/ (control = "COMPLETE" /\ queue /= <<>>)
-   /\ control' = "TREATMENT"
-   /\ IF req_under_treatment.owner = 0
-         THEN StartTreatment
-         ELSE ResumeTreatment
-   /\ UNCHANGED<<arvl_lbtimer,cmds_lbtimer,chsl_lbtimer,now,request_count,slot_count,slot_owner,
-                 row_buffer,slack>>
------------------------------------------------------------------------------                  
-\* so_did : slot owner considering the delayed issue date
-\* dist : distance to the next slot owned by the requestor
-request_arrival(req,ty,hm,arrival_rate) ==
-LET so_did == IF slack[req] >= (slot_count*TDM_Slot - now)
-                 THEN ModuloSum((slack[req]%TDM_Slot)+1,slot_owner,TDM_Period)
-                 ELSE slot_owner
-    dist == IF (now = TDM_Slot*(slot_count - 1)) /\ (req = slot_owner)
-               THEN 0
-               ELSE IF req = so_did
-                       THEN TDM_Period
-                       ELSE IF req - so_did >= 0 
-                               THEN req - so_did 
-                               ELSE so_did - req
-    calc_deadline == IF req \in CrRq
-                        THEN TDM_Slot*(slot_count + dist)
-                        ELSE TDM_Slot*(slot_count + 1)
-    request_instance == [number |-> request_count[req] + 1,
-                         owner |-> req,
-                         target |-> BankMapping[req],
-                         issue_date |-> now,
-                         delayed_issue_date |-> now + slack[req],
-                         deadline |-> calc_deadline,
-                         type |-> ty,
-                         hit_miss |-> hm,
-                         period |-> arrival_rate]
-IN  \* Only one request per requestor in the queue
-    /\ req \notin {queue[n].owner : n \in 1..Len(queue)}
-    \* No consecutive arrivals
-    /\ control \in CONTROL \{"ARRIVAL"}
-    \* Sets up the timer for the next TDM slot
-    /\ IF control = "INIT" THEN chsl_lbtimer' = TDM_Slot ELSE UNCHANGED<<chsl_lbtimer>>
-    \* The next arrival should happen at max arrival_rate cycles after this
-    /\ TimedOut_1dim(req,arvl_lbtimer)
-    /\ Set1dimTimer(req,arvl_lbtimer,arrival_rate)
-    /\ control' = "ARRIVAL"
-    /\ request_count' = [request_count EXCEPT ![req] = request_count[req] + 1]
-    /\ queue' = Append(queue,request_instance)
-    /\ UNCHANGED<<cmds_lbtimer,now,bank_state,req_under_treatment,
-                  slot_count,slot_owner,row_buffer,slack>>
------------------------------------------------------------------------------
-SlotChange ==
-    /\ control /= "INIT"
-    \* Checks if the timer has timed_out
-    /\ chsl_lbtimer = 0
-    \* Sets it aggain
-    /\ chsl_lbtimer' = TDM_Slot
-    /\ slot_count' = slot_count + 1
-    /\ slot_owner' = ModuloSum(slot_owner,1,TDM_Period)
-    /\ UNCHANGED<<cmds_lbtimer,arvl_lbtimer,now,bank_state,queue,req_under_treatment,request_count,row_buffer,slack,control>>
------------------------------------------------------------------------------
-TNext(bank) == \/ IssueACT(bank)
-               \/ IssueRD(bank)
-               \/ IssueWR(bank)
-               \/ UseBus(bank)
-               \/ ReleaseBus(bank)
-               \/ IssuePRE(bank)
-               
-Tick == LET d == 1 IN
-        /\ ~\E bank \in Banks : TNext(bank)
-        /\ \neg ENABLED (treat_request \/ request_arrival(1,"RD","HIT",10) \/ request_arrival(2,"WR","MISS",15) \/ SlotChange)
-        /\ now' = now + d
-        /\ arvl_lbtimer' = [req \in Requestors |-> Max2Numbers(0,arvl_lbtimer[req]-d)]                                                                 
-        /\ cmds_lbtimer' = [b \in Banks, c \in CMDS \{"IDLE"} |-> Max2Numbers(0,cmds_lbtimer[b,c]-d)]
-        /\ chsl_lbtimer' = Max2Numbers(0,chsl_lbtimer-d) 
-        /\ UNCHANGED<<bank_state,queue,req_under_treatment,request_count,slot_count,slot_owner,row_buffer,slack,control>>
------------------------------------------------------------------------------
-Next == \/ Tick 
-        \/ \E bank \in Banks : TNext(bank)
-        \/ treat_request
-        \/ SlotChange
-        \/ request_arrival(1,"RD","HIT",10)
-        \/ request_arrival(2,"WR","MISS",15)
------------------------------------------------------------------------------
-SafetySpec == Init /\ [][Next]_vars
-FullQueue == Len(queue) =< Queue_Capacity
-THEOREM SafetySpec => FullQueue
------------------------------------------------------------------------------
-Fairness == /\ \A b \in Banks : 
-                /\ SF_vars(IssueACT(b))
-                /\ SF_vars(IssueRD(b))
-                /\ SF_vars(IssueWR(b))
-                /\ SF_vars(IssuePRE(b))
-                /\ SF_vars(UseBus(b))
-                /\ SF_vars(ReleaseBus(b))
-            /\ WF_vars(SlotChange)
-            /\ WF_vars(treat_request)
-            /\ WF_vars(request_arrival(1,"RD","HIT",10))
-            /\ WF_vars(request_arrival(2,"WR","MISS",15))
-            
-Spec == SafetySpec /\ Fairness
-=============================================================================
-\* Modification History
-\* Last modified Fri Mar 05 10:32:19 CET 2021 by felipe
-\* Created Wed Mar 03 20:37:54 CET 2021 by felipe
diff --git a/TLAplus/TDMv6/TDMv6.tla b/TLAplus/TDMv6/TDMv6.tla
deleted file mode 100644
index 20064c3daaa5cee866d357df887e41053ce3459b..0000000000000000000000000000000000000000
--- a/TLAplus/TDMv6/TDMv6.tla
+++ /dev/null
@@ -1,225 +0,0 @@
-------------------------------- MODULE TDMv6 -------------------------------
-EXTENDS Integers, FiniteSets, Sequences, SequencesExt
-
------------------------------------------------------------------------------
-Max2Numbers(a,b) == IF a >= b THEN a ELSE b
-Max(S) == CHOOSE x \in S : \A y \in S : x >= y
-Min(S) == CHOOSE x \in S : \A y \in S : x =< y
-ModuloSum(a,b,max) == IF a + b =< max THEN a + b ELSE max - ((a+b)%max)
------------------------------------------------------------------------------
-Infinity == 1000
-Real == 0..100 \cup Infinity
------------------------------------------------------------------------------
-
-CONSTANTS 
-    \* Intra-bank constraints
-    t_RCD,
-    t_RP,
-    t_RC,
-    t_RAS,
-    t_RL,
-    t_WL,
-    t_RTP,
-    t_WR,
-    \* Inter-bank constraints
-    t_RRD,
-    \* Inter- and intra-bank constraints
-    t_RTW,
-    t_WRtoRD,
-    t_CCD,
-    t_WTR,
-    t_BURST,
-    \* Other constants
-    Banks,
-    CrRq,
-    NCrRq,
-    Mapping,
-    Queue_Capacity
-
-\* This creates a function that maps each requestor to a bank
-Requestors == CrRq \cup NCrRq
-tMapping == SetToSeq(Mapping)
-BankMapping == [req \in Requestors |-> tMapping[req]]
-\* Length of the TDM slot. Worst case is a write miss
-TDM_Slot == t_RCD + t_WL + t_BURST + t_WR + t_RP + 1
-\* Peridiocity of the TDM
-TDM_Period == Cardinality(CrRq)
-
-ASSUME
-    /\ Cardinality(Requestors) = Cardinality(Mapping)
-
-VARIABLES
-    now,
-    ACT_lbtimer,
-    RD_lbtimer,
-    WR_lbtimer,
-    PRE_lbtimer,
-    USEBUS_lbtimer,
-    RLSBUS_lbtimer,
-    ARV_lbtimer,
-    SLOT_lbtimer,
-    bank_state,
-    queue,
-    req_under_treatment,
-    request_count,
-    slot_count,
-    slot_owner,
-    row_buffer,
-    slack,
-    control
-
-vars == <<now,ACT_lbtimer,RD_lbtimer,WR_lbtimer,PRE_lbtimer,USEBUS_lbtimer,RLSBUS_lbtimer,ARV_lbtimer,SLOT_lbtimer,
-          bank_state,queue,req_under_treatment,request_count,slot_count,slot_owner,row_buffer,slack,control>>        
------------------------------------------------------------------------------
-CMDS == {"ACT","RD","WR","PRE","IDLE","USEBUS","RLSBUS"}
-CONTROL == {"INIT","ARRIVAL","TREATMENT","COMPLETED"}
------------------------------------------------------------------------------
-TimeTypeOK ==
-    /\ now \in Real
-    /\ ACT_lbtimer \in [Banks -> Real]
-    /\ RD_lbtimer \in [Banks -> Real]
-    /\ WR_lbtimer \in [Banks -> Real]
-    /\ PRE_lbtimer \in [Banks -> Real]
-    /\ USEBUS_lbtimer \in [Banks -> Real]
-    /\ RLSBUS_lbtimer \in [Banks -> Real]
-    /\ ARV_lbtimer \in [Requestors -> Real]
-    /\ SLOT_lbtimer \in Real
-
-\* No type invariance for now : req_under_treatment, queue  
-TypeOK ==
-    /\ bank_state \in [Banks -> CMDS]
-    /\ request_count \in [Requestors -> Nat]
-    /\ slot_count \in Nat
-    /\ slot_owner \in 1..Cardinality(CrRq)
-    /\ row_buffer \in [Banks -> {"OPEN","CLOSED"}]
-    /\ slack \in [CrRq -> Nat]
-    /\ control \in CONTROL
-
-Init ==
-    /\ now = 0
-    /\ ACT_lbtimer = [b \in Banks |-> 0]
-    /\ RD_lbtimer = [b \in Banks |-> 0]
-    /\ WR_lbtimer = [b \in Banks |-> 0]
-    /\ PRE_lbtimer = [b \in Banks |-> 0]
-    /\ USEBUS_lbtimer = [b \in Banks |-> 0]
-    /\ RLSBUS_lbtimer = [b \in Banks |-> 0]
-    /\ ARV_lbtimer = [req \in Requestors |-> 0]
-    /\ SLOT_lbtimer = 0
-    /\ bank_state = [b \in Banks |-> "IDLE"]
-    /\ queue = <<>>
-    /\ req_under_treatment = [type |-> "NONE",deadline |-> 0,target |-> "NONE",number |-> 0,owner |-> 0,
-                              issue_date |-> 0,delayed_issue_date |-> 0,hit_miss |-> "NONE"]
-    /\ request_count = [r \in Requestors |-> 0]
-    /\ slot_count = 1
-    /\ slot_owner = 1
-    /\ row_buffer = [b \in Banks |-> "CLOSED"]
-    /\ slack = [req \in CrRq |-> 0]
-    /\ control = "INIT"
------------------------------------------------------------------------------
-TimedOut(timer,index) == timer[index] = 0
-SetLBTimer(timer,index,value) == timer' = [timer EXCEPT ![index] = value]
------------------------------------------------------------------------------
-IssueACT(bank) ==
-    /\ control = "TREATMENT"
-    /\ bank_state[bank] = "ACT"
-    /\ ACT_lbtimer["N1"] = 0
-    /\ ACT_lbtimer["N2"] = 0
-    /\ control' = "INIT"
-    /\ UNCHANGED<<now,ACT_lbtimer,RD_lbtimer,WR_lbtimer,PRE_lbtimer,USEBUS_lbtimer,RLSBUS_lbtimer,ARV_lbtimer,SLOT_lbtimer,
-                  bank_state,queue,req_under_treatment,request_count,slot_count,slot_owner,row_buffer,slack>>   
------------------------------------------------------------------------------
-treat_request ==
-LET deadlines == {queue[n].deadline : n \in 1..Len(queue)}
-    min_deadline == Min(deadlines)
-    selected_req == SelectSeq(queue, LAMBDA elem: elem.deadline = min_deadline)[1]
-IN /\ (control = "ARRIVAL") \/ (control = "COMPLETE" /\ queue /= <<>>)
-   /\ control' = "TREATMENT"
-   /\ queue' = IF req_under_treatment.owner = 0 THEN Remove(queue,selected_req) ELSE queue
-   /\ req_under_treatment' = IF req_under_treatment.owner = 0 THEN selected_req ELSE req_under_treatment
-   /\ bank_state' = IF req_under_treatment.owner = 0 THEN [bank_state EXCEPT ![selected_req.target] = "ACT"] ELSE bank_state
-   /\ UNCHANGED<<now,ACT_lbtimer,RD_lbtimer,WR_lbtimer,PRE_lbtimer,USEBUS_lbtimer,RLSBUS_lbtimer,ARV_lbtimer,SLOT_lbtimer,
-                 request_count,slot_count,slot_owner,row_buffer,slack>>
------------------------------------------------------------------------------                  
-request_arrival(req,ty,hm,arrival_rate) ==
-LET so_did == IF slack[req] >= (slot_count*TDM_Slot - now)
-                 THEN ModuloSum((slack[req]%TDM_Slot)+1,slot_owner,TDM_Period)
-                 ELSE slot_owner
-    dist == IF (now = TDM_Slot*(slot_count - 1)) /\ (req = slot_owner)
-               THEN 0
-               ELSE IF req = so_did
-                       THEN TDM_Period
-                       ELSE IF req - so_did >= 0 
-                               THEN req - so_did 
-                               ELSE so_did - req
-    calc_deadline == IF req \in CrRq
-                        THEN TDM_Slot*(slot_count + dist)
-                        ELSE TDM_Slot*(slot_count + 1)
-    request_instance == [number |-> request_count[req] + 1,
-                         owner |-> req,
-                         target |-> BankMapping[req],
-                         issue_date |-> now,
-                         delayed_issue_date |-> now + slack[req],
-                         deadline |-> calc_deadline,
-                         type |-> ty,
-                         hit_miss |-> hm,
-                         period |-> arrival_rate]
-IN  /\ req \notin {queue[n].owner : n \in 1..Len(queue)}
-    /\ control \in CONTROL \{"ARRIVAL"}
-    /\ TimedOut(ARV_lbtimer,req)
-    \* Primed
-    /\ SLOT_lbtimer' = IF control = "INIT" THEN TDM_Slot ELSE SLOT_lbtimer
-    /\ SetLBTimer(ARV_lbtimer,req,arrival_rate)
-    /\ control' = "ARRIVAL"
-    /\ request_count' = [request_count EXCEPT ![req] = request_count[req] + 1]
-    /\ queue' = Append(queue,request_instance)
-    /\ UNCHANGED<<now,ACT_lbtimer,RD_lbtimer,WR_lbtimer,PRE_lbtimer,USEBUS_lbtimer,RLSBUS_lbtimer,
-                  bank_state,req_under_treatment,slot_count,slot_owner,row_buffer,slack>>
------------------------------------------------------------------------------
-SlotChange ==
-    /\ control /= "INIT"
-    /\ SLOT_lbtimer = 0
-    /\ SLOT_lbtimer' = TDM_Slot
-    /\ slot_count' = slot_count + 1
-    /\ slot_owner' = ModuloSum(slot_owner,1,TDM_Period)
-    /\ UNCHANGED<<now,ACT_lbtimer,RD_lbtimer,WR_lbtimer,PRE_lbtimer,USEBUS_lbtimer,RLSBUS_lbtimer,ARV_lbtimer,
-                  bank_state,queue,req_under_treatment,request_count,row_buffer,slack,control>>         
------------------------------------------------------------------------------
-\*TNext(bank) == IssueACT(bank)
------------------------------------------------------------------------------
-\*Tick == \E d \in 0..100:
-\*            \* The Tick action is only allowed to happen when other decision actions are not possible
-\*            /\ ~\E bank \in Banks : IssueACT(bank)
-\*            /\ \neg ENABLED (treat_request \/ request_arrival(1,"RD","HIT",10) \/ request_arrival(2,"WR","MISS",15) \/ SlotChange)
-\*            /\ now' = now + d
-\*            /\ ACT_lbtimer' = [b \in Banks |-> Max2Numbers(0,ACT_lbtimer[b]-d)]
-\*            /\ RD_lbtimer' = [b \in Banks |-> Max2Numbers(0,RD_lbtimer[b]-d)]     
-\*            /\ WR_lbtimer' = [b \in Banks |-> Max2Numbers(0,WR_lbtimer[b]-d)]     
-\*            /\ PRE_lbtimer' = [b \in Banks |-> Max2Numbers(0,PRE_lbtimer[b]-d)]     
-\*            /\ USEBUS_lbtimer' = [b \in Banks |-> Max2Numbers(0,USEBUS_lbtimer[b]-d)]     
-\*            /\ RLSBUS_lbtimer' = [b \in Banks |-> Max2Numbers(0,RLSBUS_lbtimer[b]-d)]
-\*            /\ ARV_lbtimer' = [b \in Banks |-> Max2Numbers(0,ARV_lbtimer[b]-d)]
-\*            /\ SLOT_lbtimer' = Max2Numbers(0,SLOT_lbtimer-d)                                                             
-\*            /\ UNCHANGED<<bank_state,queue,req_under_treatment,request_count,slot_count,slot_owner,row_buffer,slack,control>>
------------------------------------------------------------------------------
-Next == \/ request_arrival(1,"RD","HIT",10)
-        \/ request_arrival(2,"WR","MISS",15)
-        \*\/ Tick
-        \/ treat_request
-        \/ SlotChange
-        \/ \E bank \in Banks : IssueACT(bank)
------------------------------------------------------------------------------
-SafetySpec == Init /\ [][Next]_vars
-FullQueue == Len(queue) =< Queue_Capacity
-THEOREM SafetySpec => FullQueue
------------------------------------------------------------------------------
-Fairness == /\ SF_vars(SlotChange)
-            /\ SF_vars(treat_request)
-            /\ SF_vars(request_arrival(1,"RD","HIT",10))
-            /\ SF_vars(request_arrival(2,"WR","MISS",15))
-            /\ \A b \in Banks : SF_vars(IssueACT(b))
-            
-Spec == SafetySpec /\ Fairness
-=============================================================================
-\* Modification History
-\* Last modified Fri Mar 05 14:21:57 CET 2021 by felipe
-\* Created Wed Mar 03 20:37:54 CET 2021 by felipe
\ No newline at end of file