tla-rs 0.1.0

Rust implementation of the IronFleet verified distributed systems framework
use builtin::*;
use builtin_macros::*;
use crate::implementation::common::function::*;
use vstd::prelude::*;
use vstd::slice::*;
use crate::verus_extra::seq_lib_v::*;
use crate::common::native::io_s::*;
use crate::protocol::RSL::environment::*;
use crate::implementation::RSL::{
    replicaimpl_class::*, 
    cmessage::*, cbroadcast::*, 
    replicaimpl_delivery::*, 
    netrsl_i::*, 
    ReplicaImpl::*,
    replicaimpl_read_clock::*,
    replicaimpl_process_packet_no_clock::*,
};
use vstd::{map::*, modes::*, prelude::*, seq::*, seq_lib::*, *};
use vstd::{set::*, set_lib::*};

verus!{
    #[verifier(external_body)]
    pub fn replica_no_receive_no_read_clock_next_maybe_enter_new_view_send_1a(r:&mut ReplicaImpl, netc:&mut NetClient) -> (ok:bool)
    {
        let outpackets = CReplica::CReplicaNextSpontaneousMaybeEnterNewViewAndSend1a(&mut r.replica);
        let ok = deliver_outbound_packets(r, netc, &outpackets);
        ok
    }

    #[verifier(external_body)]
    pub fn replica_no_receive_no_read_clock_next_maybe_enter_phase2(r:&mut ReplicaImpl, netc:&mut NetClient) -> (ok:bool)
    {
        let outpackets = CReplica::CReplicaNextSpontaneousMaybeEnterPhase2(&mut r.replica);
        let ok = deliver_outbound_packets(r, netc, &outpackets);
        ok
    }

    #[verifier(external_body)]
    pub fn replica_no_receive_no_read_clock_truncate_log_based_on_checkpoints(r:&mut ReplicaImpl, netc:&mut NetClient) -> (ok:bool)
    {
        let outpackets = CReplica::CReplicaNextSpontaneousTruncateLogBasedOnCheckpoints(&mut r.replica);
        let ok = deliver_outbound_packets(r, netc, &outpackets);
        ok
    }

    #[verifier(external_body)]
    pub fn replica_no_receive_no_read_clock_maybe_make_decision(r:&mut ReplicaImpl, netc:&mut NetClient) -> (ok:bool)
    {
        let outpackets = CReplica::CReplicaNextSpontaneousMaybeMakeDecision(&mut r.replica);
        let ok = deliver_outbound_packets(r, netc, &outpackets);
        ok
    }

    #[verifier(external_body)]
    pub fn replica_no_receive_no_read_clock_maybe_execute(r:&mut ReplicaImpl, netc:&mut NetClient) -> (ok:bool)
    {
        let outpackets = CReplica::CReplicaNextSpontaneousMaybeExecute(&mut r.replica);
        let ok = deliver_outbound_packets(r, netc, &outpackets);
        ok
    }

    #[verifier(external_body)]
    pub fn replica_no_receive_no_read_clock(r:&mut ReplicaImpl, netc:&mut NetClient) -> (ok:bool)
    {
        if r.nextActionIndex == 1 {
            replica_no_receive_no_read_clock_next_maybe_enter_new_view_send_1a(r, netc)
        } else if r.nextActionIndex == 2 {
            replica_no_receive_no_read_clock_next_maybe_enter_phase2(r, netc)
        } else if r.nextActionIndex == 4 {
            replica_no_receive_no_read_clock_truncate_log_based_on_checkpoints(r, netc)
        } else if r.nextActionIndex == 5 {
            replica_no_receive_no_read_clock_maybe_make_decision(r, netc)
        } else if r.nextActionIndex == 6 {
            replica_no_receive_no_read_clock_maybe_execute(r, netc)
        } else {
            true
        }
    }
}