diff --git a/core/MarkovProcesses.jl b/core/MarkovProcesses.jl
index f0fdc940ae930813c54bbe2a9fd65a01d4337fbb..54ff8a2df6235d953f9f40b3ef7776471c2807eb 100644
--- a/core/MarkovProcesses.jl
+++ b/core/MarkovProcesses.jl
@@ -29,7 +29,7 @@ export get_index, get_value, length_var, isaccepted
 
 # Model related methods
 export simulate, volatile_simulate
-export distribute_mean_value_lha, mean_value_lha, distribute_prob_accept_lha, probability_var_value_lha
+export distribute_mean_value_lha, mean_value_lha, distribute_prob_accept_lha, probability_var_value_lha, smc_chernoff
 export set_param!, set_x0!, set_time_bound!, set_observed_var!, observe_all!
 export get_param, get_x0, getproperty, get_proba_model, get_observed_var
 export isbounded, isaccepted, check_consistency
diff --git a/core/model.jl b/core/model.jl
index 83b53133ce7ac2c1a7e7b2e1e5e16323e93ba481..ea8ff929589c73f8da8a4f0d18922f862a258413 100644
--- a/core/model.jl
+++ b/core/model.jl
@@ -402,6 +402,13 @@ function probability_var_value_lha(sm::SynchronizedModel, nbr_sim::Int;
     return sum_val / nbr_sim
 end
 
+function smc_chernoff(sm::SynchronizedModel; approx::Float64 = 0.01, confidence::Float64 = 0.99)
+    @assert sm.automaton.name in ["F property", "G property", "G and F property"] 
+    nbr_sim = log(2/(1-confidence)) / (2*approx^2)
+    nbr_sim = convert(Int, trunc(nbr_sim)+1)
+    @show nbr_sim
+    return probability_var_value_lha(sm, nbr_sim)
+end
 
 function distribute_prob_accept_lha(sm::SynchronizedModel, nbr_sim::Int)
     sum_val = @distributed (+) for i = 1:nbr_sim 
diff --git a/models/intracellular_viral_infection.jl b/models/intracellular_viral_infection.jl
new file mode 100644
index 0000000000000000000000000000000000000000..9de65fa24c42c5db2d6f5a69d701ed5680873644
--- /dev/null
+++ b/models/intracellular_viral_infection.jl
@@ -0,0 +1,16 @@
+
+intracellular_viral_infection = @network_model begin
+    R1: (N + T => G + T, k1 * T * cn)
+    R2: (N + G => T, k2 * G * cn)
+    R3: (N + A + T => S + T, k3 * T * cn * ca)
+    R4: (T => ∅, k4 * T)
+    R5: (S => ∅, k5 * S)
+    R6: (G + S => V, k6 * G * S)
+end "Intracellular viral infection pkg"
+
+set_x0!(intracellular_viral_infection, [:N, :A, :G, :T, :S, :V], [10000, 10000, 0, 1, 0, 0])
+set_param!(intracellular_viral_infection, [:cn, :ca, :k1, :k2, :k3, :k4, :k5, :k6], [1.0, 1.0, 1.0, 0.025, 100.0, 0.25, 0.2, 7.5E-6])
+set_time_bound!(intracellular_viral_infection, 200.0)
+
+export intracellular_viral_infection
+