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_read_clock_next_maybe_nominate_value_send_2a(r:&mut ReplicaImpl, netc:&mut NetClient) -> (ok:bool)
    {
        let clock = read_clock(netc);
        let outpackets = CReplica::CReplicaNextReadClockMaybeNominateValueAndSend2a(&mut r.replica, clock);
        let ok = deliver_outbound_packets(r, netc, &outpackets);
        ok
    }

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

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

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

    #[verifier(external_body)]
    pub fn replica_no_receive_read_clock_next(r:&mut ReplicaImpl, netc:&mut NetClient) -> (ok:bool)
    {
        if r.nextActionIndex == 3 {
            replica_no_receive_read_clock_next_maybe_nominate_value_send_2a(r, netc)
        } else if r.nextActionIndex == 7 {
            replica_no_receive_read_clock_next_check_for_view_timeout(r, netc)
        } else if r.nextActionIndex == 8 {
            replica_no_receive_read_clock_next_check_for_quorum_of_view_suspicious(r, netc)
        } else if r.nextActionIndex == 9 {
            replica_no_receive_read_clock_next_maybe_send_heartbeat(r, netc)
        } else {
            true
        }
    }
}