Skip to the content.

Child Care Subsidy Example

The Child Care Subsidy (CCS) is a financial assistance to help families with the cost of child care. For example, the amount given by the Australian Government depends on the family circumstances. In this example, we explore different criteria to define a fair distribution of the child care subsidy. Each criterion is defined by a pipeline, as described in the next sections.

This project includes an executable example of Child Care Subsidy pipelines. The script makeall.sh creates the file tiles, which is an executable JAR file that can be directly executed in Linux. Its input is a YAML configuration file, like the configuration file provided for the unit tests. A simplified version is shown below.

---


## Tiles (https://julianmendez.github.io/tiles/)


## Actors for this scenario
actors:
  family A: .


## Resources for this scenario
resources:
  subsidy 100: .


## Number of children in each family.
actor_children:
  family A: 2


## Number of guardians in each family.
actor_adults:
  family A: 2


## Total income in each family.
actor_income:
  family A: 2000


## The value of each resource.
resource_value:
  subsidy 100: 100


## The resources received by the family, checked by the pipeline.
outcome:
  family A: subsidy 100


## Pipelines that can test the provided data.
pipelines:
  CcsNoSubsidyPipeline: .
  CcsPerChildPipeline: .
  CcsPerFamilyPipeline: .
  CcsSingleGuardianPipeline: .

This example is modeled with Tiles, where each actor is a family. The families (actors) and subsidies (resources) have identifiers. In addition, the resources have some value ( resource_value). The assignments (outcome) relate actors with resources. Some of the properties that each family has are: number of adults in the family (actor_adults) and number of children in the family (actor_children). All the pipelines to be tested have their own section (pipelines).

Tiles used

Tile Class
all-actor (a) AllActorTile
(a) received (m) ReceivedSigmaPTile
(m) all-satisfy (p) b AllSatisfyPTile
(m) all-equal b AllEqualTile
(a) p (m) AttributePTile
(a) p ? (a) FilterActorTile
(m0), (m1) all-at-least b AllAtLeastTile
(m0), (m1) f (m0,m1) (m) SigmaTile
b0, b1 f (b0,b1) b CombineBooleanTile

No Child Care Subsidy

This is the No Subsidy Pipeline. In this case, no subsidy is given to any family.

graph LR
  all-actor(all-actor) --> received
  received(received) --> all-satisfy-0(all-satisfy m=0)

Child Care Subsidy Per Child Pipeline

This is the Per Child Pipeline. In this case, the amount of money given to each family depends on the number of children in the family.

graph LR
  all-actor(all-actor) --> received
  all-actor --> children
  received(received) --> m0/m1
  children(children) --> m0/m1
  m0/m1(m0 / m1) --> all-equal(all-equal)

Child Care Subsidy Per Family Pipeline

This is the Per Family Pipeline. In this case, the amount of money given to each family is the same, regardless of the number of children in the family.

graph LR
  all-actor(all-actor) --> received
  received(received) --> all-equal(all-equal)

Child Card Subsidy to Single Guardian Pipeline

This is the Single Guardian Pipeline. In this case, the subsidy is only granted to families having a single guardian.

graph LR
  all-actor(all-actor) --> adults-1
  all-actor --> adults-2
  adults-1(adults a0 = 1?) --> received-1
  adults-2(adults a1 > 1?) --> received-0
  received-1(received) --> all-equal
  received-0(received) --> all-satisfy-0
  all-equal(all-equal) --> and(and)
  all-satisfy-0(all-satisfy m=0) --> and