Basic Set Theory: Marginal Probability, Cardinality, Independence, etc.

import math as math

#Methods
def sample_space_partition(given_set1, given_set2):
    return union(given_set1, given_set2)

def cardinality(given_set):
    cardinality_set = 0
    for val in given_set:
        cardinality_set += 1
    return cardinality_set

def disjoint(given_set1, given_set2):
    for val1 in given_set1:
        for val2 in given_set2:
            if val1 == val2:
                return False
    return True

def intersection(given_set1, given_set2):
    intersecting_set = set()
    for val1 in given_set1:
        for val2 in given_set2:
            if val1 == val2:
                intersecting_set.add(val1)
    return intersecting_set

def union(given_set1, given_set2):
    union_set = set()
    for val1 in given_set1:
        if val1 not in union_set:
            union_set.add(val1)    
    for val2 in given_set2:
        if val2 not in union_set:
            union_set.add(val2)
    return union_set


def conditional_probability(given_set1, given_set2):
    overlap = intersection(given_set1, given_set2)
    c_p = cardinality(overlap)/cardinality(given_set2)
    return c_p

def prob(given_set, sample_space):
    p = cardinality(given_set) / cardinality(sample_space)
    return p    
    
def independence(given_set1, given_set2):
    if conditional_probability(given_set1, given_set2) == prob(given_set1, sample_space):
        return True
    else:
        return False